Android Studio: ClassNotFoundException

j'ai été occupé avec mon application pendant plus d'une semaine, quand soudain:

11-12 07:59:17.860    1653-1653/nl.test.myapp E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{nl.test.MyApp/nl.test.MyApp.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "nl.test.myapp.MainActivity" on path: DexPathList[[zip file "/data/app/nl.test.myapp-2.apk"],nativeLibraryDirectories=[/data/app-lib/nl.test.myapp-2, /system/lib]]
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2137)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
        at android.app.ActivityThread.access0(ActivityThread.java:141)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5103)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:525)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
        at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.ClassNotFoundException: Didn't find class "nl.test.myapp.MainActivity" on path: DexPathList[[zip file "/data/app/nl.test.MyApp-2.apk"],nativeLibraryDirectories=[/data/app-lib/nl.test.MyApp-2, /system/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
        at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
        at android.app.ActivityThread.access0(ActivityThread.java:141)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5103)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:525)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
        at dalvik.system.NativeStart.main(Native Method)

voici mon AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="nl.test.myapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="19" />

    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="nl.test.myapp.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity android:name=".welcomewizard.WelcomeWizardIntroPage"
            android:label="@string/app_name" />

        <activity android:name=".welcomewizard.WelcomeWizardPage1"
            android:label="@string/app_name" />

        <activity android:name=".welcomewizard.WelcomeWizardPage2"
            android:label="@string/app_name" />

        <activity android:name=".welcomewizard.WelcomeWizardPage3"
            android:label="@string/app_name" />

        <activity android:name=".welcomewizard.WelcomeWizardPage4"
            android:label="@string/app_name" />

        <activity android:name=".welcomewizard.WelcomeWizardFinishPage"
            android:label="@string/app_name" />

        <activity android:name=".CompanySelectorActivity"
            android:label="@string/compsel_actionbarlabel" />
    </application>

</manifest>

ce qui se passait après quelques problèmes avec mon R.java (l'identifiant de la vue où incorrect), après la reconstruction de la projet de ce problème dans les parages

j'ai déjà essayé L'Invalidate Cashes / restart dans le fichier IDE-menu

mise à Jour 14:51: c'est mon compilateur.fichier xml:

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="CompilerConfiguration">
    <option name="DEFAULT_COMPILER" value="Javac" />
    <resourceExtensions />
    <wildcardResourcePatterns>
      <entry name="!?*.java" />
      <entry name="!?*.form" />
      <entry name="!?*.class" />
      <entry name="!?*.groovy" />
      <entry name="!?*.scala" />
      <entry name="!?*.flex" />
      <entry name="!?*.kt" />
      <entry name="!?*.clj" />
    </wildcardResourcePatterns>
    <annotationProcessing>
      <profile default="true" name="Default" enabled="false">
        <processorPath useClasspath="true" />
      </profile>
    </annotationProcessing>
  </component>
</project>

Mon MainActivity.java file (srcmainjavanltestmyappMainActivity.java):

package nl.test.myapp;

import android.annotation.TargetApi;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.widget.RelativeLayout;

import nl.test.myapp.welcomewizard.WelcomeWizardIntroPage;

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        setBackground(R.drawable.background_grey);

        Intent intent = new Intent(this, WelcomeWizardIntroPage.class);
        startActivity(intent);
        finish();
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    private void setBackground(int drawable){
        int currentApiVersion = android.os.Build.VERSION.SDK_INT;
        if(currentApiVersion >= android.os.Build.VERSION_CODES.JELLY_BEAN){
            RelativeLayout layout = (RelativeLayout) findViewById(R.id.layout_main);
            layout.setBackground(getResources().getDrawable(drawable));
        }
    }
}
10
demandé sur patrick 2013-11-12 17:20:15

16 réponses

Fermer android studio. Accédez au dossier du projet. Supprimer tous les fichiers relatifs à intelliJ (Android Studio) I. e

  • .idée (dossier)
  • *.l'imi (fichiers)

assurez-vous également que le nom du paquet correspond au paquet dans le manifeste android.XML.

puis réimporter le projet.

cela m'est arrivé parce que j'ai renommé le paquet root et IntelliJ (android studio) ne l'a pas suivi.

7
répondu user2415486 2015-04-23 10:53:51

j'ai créé un nouveau projet dans Android studio et tout copié à partir de l'ancien dans le nouveau. Maintenant, il fonctionne à nouveau, sans aucun(!) des modifications du code.

5
répondu patrick 2013-11-13 09:11:45

j'ai eu le même problème, il s'avère que j'ai foiré avec une certaine méthode finale. Assurez-vous de vérifier dalvikvm les erreurs dans le logcat de sortie avant L'EXCEPTION fatale. Je vais vous donner quelques indications sur le problème. Dans mon cas, j'avais une méthode finale (isResumed) qui était déjà défini dans la classe de base causant le crash d'exécution. Je ne me plaignais pas au moment de la compilation.

Vérifier les logs:

E/dalvikvm( 9984): Method Lcom/your/package/ui/SomeActivity;.isResumed overrides final Landroid/app/Activity;.isResumed
W/dalvikvm( 9984): failed creating vtable
...
D/AndroidRuntime( 9962): Shutting down VM
...
E/AndroidRuntime(10065): FATAL EXCEPTION: main
E/AndroidRuntime(10065): Process: com.yourpackage.ui, PID: 10065
E/AndroidRuntime(10065): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.yourpackage.ui/com.yourpackage.ui.HomeActivity}: java.lang.ClassNotFoundException: Didn't find class "com.yourpackage.ui.HomeActivity" on path: DexPathList[[zip file "/data/app/com.yourpackage.ui-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.yourpackage.ui-2, /vendor/lib, /system/lib]]
...
2
répondu tdevaux 2014-01-12 20:40:21

je suis tombé sur cette. Mon application fonctionnait très bien et un jour, il a commencé à fonctionner dans ces ClassNotFoundExceptions. Mon code n'avait pas changé du tout.

autant que je puisse dire, il a fini par être un bug dans la construction D'Android Studio. J'avais récemment mis à jour à la dernière version sur le canal canari.

afin de revenir à une version antérieure sur le canal dev a des choses à travailler de nouveau:

  1. Aller dans Paramètres / l'Apparence Et le Comportement / Système Paramètres / Mise À Jour
  2. passez à Dev Channel et vérifiez maintenant.
2
répondu ktusznio 2016-04-30 21:52:54

j'ai eu le même problème. Je me suis souvenu, que précédemment" pas assez de mémoire " message a été montré et le processus de téléchargement de l'application ne pouvait pas finir, s'arrêtant sur dexDebug avec erreur. Puis j'ai libéré assez de mémoire, mais l'application a commencé avec ClassNotFoundException.

La solution qui a fonctionné pour moi était de supprimer tous les dossiers "construire" dans le projet. Je suppose que gradle peut mettre des fichiers corrompus pour" construire " dossier quand il n'y a pas assez de mémoire.

1
répondu Denis 2016-01-27 04:56:25

vous pouvez vérifier le mécanisme Multidex. La raison peut être des nombres de méthode débordent.

  1. Ajouter MultiDex.installer(ce); à votre Demande:

    @Override
    protected void attachBaseContext(Context base) {
         super.attachBaseContext(base);
         MultiDex.install(this);
    }
    
  2. afterEvaluate {
       tasks.matching {
           it.name.startsWith('dex')
       }.each { dx ->
           if (dx.additionalParameters == null) {
               dx.additionalParameters = []
           }
           dx.additionalParameters += '--multi-dex' // enable multidex
       }
    }
    

au grad de votre module app.construire

1
répondu Yisu Zhang 2016-06-20 09:23:01
   try: 
   <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
0
répondu TeeTracker 2013-11-12 13:25:45

on dirait que vous avez une typographie d'espace de noms quelque part. Recherche pour MyApp et remplacez myapp.

0
répondu Ε Г И І И О 2013-11-12 13:38:02

Votre Activité Principale.java est exclu de la compilation, donc cette classe n'est pas incluse .apk. Supprimer la ligne:

<file url="file://$PROJECT_DIR$/src/nl/test/MyApp.java" />

à partir de la excludeFromCompile section de la .idée/compilateur.fichier xml (ou vous pouvez le faire à partir des paramètres IDE).

Source

0
répondu Kalai.G 2017-05-23 12:18:07

je ne sais pas ce qui vous aidera..de toute façon, essayez d'utiliser le thème de l'application comme @style/Thème.AppCompat..nous devons utiliser selon le Forum des développeurs.

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.AppCompat" >

       <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
0
répondu Manivannan 2013-11-13 06:37:59

Comme je peux le voir dans votre Journal ,

nativeLibraryDirectories=[/data/app-lib/nl.test.myapp-2, /system/lib

pour cela vous pouvez changer votre liblibs, j'ai fait ceci et cela a résolu mon problème.

vous verriez une marque d'erreur sur le projet pour résoudre ce qui va aux propriétés du projet et à java build path, supprimez toutes les bibliothèques de là . Vous ne verrez pas cette erreur à nouveau. :)

0
répondu Walking Code 2014-05-05 12:01:59

lorsque vous utilisez Android Studio, veuillez vous assurer que le dossier "src" qui contient votre classe Java est marqué "Source Root". Sinon, il ne sera pas dans L'APK.

0
répondu Behnam Nikbakht 2016-01-07 19:27:24

dans mon cas c'était une déclaration manifeste de android.app.Application dans le projet et le code réel dans le module.

0
répondu kreker 2016-04-02 13:48:57

C'est arrivé à moi aussi, et aucun des offres d'ici aidé. Mon problème a aussi été causé par le fait que j'ai renommé le paquet racine. Mon ClassNotFoundException montrait une DexPathList qui était l'ancien chemin vers mon paquet. J'ai trouvé que la cause était dans mon Script Gradle appelé "construire.gradle (Module: app) "j'avais une ligne disant: applicationId"ancien nom de paquet". J'ai changé le nom du paquet, j'ai fait une synchronisation de gradle, et tout a marché.

0
répondu Bert Baker 2017-07-31 19:16:41

si vous créez une bibliothèque android, vous pouvez tout simplement avoir oublié d'importer votre bibliothèque dans votre construction d'application.gradle avec l' implementation project mot clé :

dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) testImplementation 'junit:junit:4.12' implementation 'com.android.support:design:27.0.2' implementation 'com.android.support:mediarouter-v7:27.0.2' implementation project(':mylib-module:mymodule') implementation 'com.google.firebase:firebase-core:10.0.1' }

Espérons que cela aide :)

0
répondu n3wbie 2018-01-31 10:11:51

Construction Menu et Nettoyage De Projet.

la solution ci-dessus a parfaitement fonctionné pour moi.

0
répondu Mohammad Naim Dahee 2018-02-03 09:29:05