NoClassDefFoundError Android Project

36,042

Try going to Project -> Properties -> Java Build Path -> Order & Export and ensure Android Private Libraries are checked for your project and for all other library projects you are using.

Share:
36,042
VorteXavier
Author by

VorteXavier

Updated on December 11, 2022

Comments

  • VorteXavier
    VorteXavier over 1 year

    First of all, I know there are plenty of questions/answers about this topic, I've read most of them but still getting the error:

    05-17 02:57:06.522: E/AndroidRuntime(17073): java.lang.NoClassDefFoundError: ar.com.package.android.MainActivity
    

    The project worked just fine until I updated Eclipse from 21 to 22.

    I have tried everything I could: I checked the manifest; Cleaned the project; checked my build path, tried the app in different android version, set java compliance level to 1.6 (libraries too), etc. I just can't figure out what the problem is.

    Here's my manifest, I couldn't find anything wrong with it:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ar.com.package.android"
    android:versionCode="1"
    android:versionName="1.0" >
    
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/> 
    
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    
    <permission
        android:name="ar.com.package.android.permission.MAPS_RECEIVE"
        android:protectionLevel="signature"/>
    <uses-permission android:name="ar.com.package.android.permission.MAPS_RECEIVE"/>
    
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.Sherlock.Light.DarkActionBar" 
        android:hardwareAccelerated="true">
    
    
        <meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="my key"/>
    
    
        <activity
            android:name="ar.com.package.android.SplashScreen"
            android:label="@string/app_name"
            android:noHistory="true"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Black.NoTitleBar"
            android:windowSoftInputMode="stateHidden"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    
        <activity
            android:name="ar.com.package.android.MainActivity"
            android:logo="@drawable/logo"
            android:screenOrientation="portrait" 
            android:windowSoftInputMode="stateHidden"
             >
        </activity>
    
        <activity
            android:name="ar.com.package.android.SearchForm"
            android:label="@string/title_activity_search_form"
            android:parentActivityName="ar.com.package.android.MainActivity"
            >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="ar.com.package.android.MainActivity" />
        </activity>
    
    </application>
    
    </manifest>
    

    Any help is welcome. I'll keep researching, if I get the answer I'll post it.

    EDIT

    Here's the MainActivity code:

    package ar.com.package.android;
    
    import android.annotation.SuppressLint;
    import android.content.Intent;
    import android.os.Bundle;
    import android.support.v4.app.DialogFragment;
    import android.view.KeyEvent;
    import android.view.View;
    import android.widget.Toast;
    import com.actionbarsherlock.view.*;
    import com.google.android.gms.common.ConnectionResult;
    import com.google.android.gms.common.GooglePlayServicesUtil;
    import com.google.android.gms.maps.CameraUpdateFactory;
    import com.google.android.gms.maps.GoogleMap;
    import com.google.android.gms.maps.SupportMapFragment;
    import com.google.android.gms.maps.model.LatLng;
    import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
    import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu.OnCloseListener;
    import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu.OnOpenListener;
    import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
    
    @SuppressLint("NewApi")
    public class MainActivity extends SlidingFragmentActivity {
    
    private SlidingMenu menu;
    private Toast toast;
    private long lastBackPressTime = 0;
    private GoogleMap map;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        // slidemenu
        setBehindContentView(R.layout.menu);
    
        setSlidingActionBarEnabled(false);
    
        menu = getSlidingMenu();
        menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        menu.setShadowWidthRes(R.dimen.shadow_width);
        menu.setShadowDrawable(R.drawable.shadow);
        menu.setBehindOffset(100);
        menu.setFadeDegree(0.35f);
        menu.setSlidingEnabled(false);
    
        menu.setOnCloseListener(new OnCloseListener() {
            @Override
            public void onClose() {
                menu.setSlidingEnabled(false);
            }
        });
    
        menu.setOnOpenListener(new OnOpenListener() {
            @Override
            public void onOpen() {
                menu.setSlidingEnabled(true);
            }
        });
    
        getSupportActionBar().setDisplayShowCustomEnabled(true);
        getSupportActionBar().setDisplayHomeAsUpEnabled(false);
    
        // ---slide menu
    
        map = ((SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map)).getMap();
    
        // Getting Google Play availability status
        int status = GooglePlayServicesUtil
                .isGooglePlayServicesAvailable(getBaseContext());
    
        if (status != ConnectionResult.SUCCESS) {
    
            Toast.makeText(this, "Google Maps no esta disponible.",
                    Toast.LENGTH_LONG).show();
    
        } else {
    
    
            map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(
                    -26.8175915814614, -65.22274105834958), 13));
    
            // Enabling MyLocation Layer of Google Map
            map.setMyLocationEnabled(true);
        }
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getSupportMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.home:
            toggle();
            return true;
    
        case R.id.action_search:
            final int RESULT = 1;
            startActivityForResult(new Intent(MainActivity.this,
                    SearchForm.class), RESULT);
            return true;
    
        case R.id.action_lineas:
            showDialogLineas();
            return true;
    
        case R.id.action_acercade:
            showDialogAcercaDe();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
    
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && !menu.isMenuShowing()) {
    
            if (this.lastBackPressTime < System.currentTimeMillis() - 4000) {
                toast = Toast.makeText(this,
                        "Presione Atrás nuevamente para cerrar",
                        Toast.LENGTH_LONG);
                toast.show();
                this.lastBackPressTime = System.currentTimeMillis();
            } else {
                if (toast != null) {
                    toast.cancel();
                }
                super.onBackPressed();
            }
    
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
    
    public void onResultadosClicked(View view) {
        showMenu();
    }
    
    public void showDialogLineas(){
        DialogFragment dialog = new LineasDialog();
        dialog.show(getSupportFragmentManager(), "Lineas");
    }
    
    public void showDialogAcercaDe(){
        DialogFragment dialog = new AcercaDeDialog();
        dialog.show(getSupportFragmentManager(), "Acerca");
    }
    }
    
  • Sloy
    Sloy almost 11 years
    Thanks, worked for me.
  • samm
    samm almost 11 years
    +1 i tried many solutions but only this got worked, thanks:)
  • Rarw
    Rarw almost 11 years
    worked for me - great catch
  • androidevil
    androidevil over 10 years
    How can I do this setting in AndroidStudio?
  • smriti3
    smriti3 over 10 years
    This worked for me [+1]
  • Eman87
    Eman87 over 10 years
    In my case it checked in all libraries and I still got the same exception.
  • John
    John almost 10 years
    Thanks, worked for me
  • SleepNot
    SleepNot about 9 years
    Any solution for Android Studio?
  • AA_PV
    AA_PV over 7 years
    Managed to get the error on Android Studio. Any solutions yet? @androidevil
  • androidevil
    androidevil over 7 years
    @AA_PV I don't remember what I did in that time. Coincidentally, I'm having this issue. Looking for a solution now.
  • AA_PV
    AA_PV over 7 years
    I think I ran into the problem on changing the gradle version in the build file for a library. I don't remember resolving this myself now, try running with lower version of gradle