ClassNotFoundException après la mise à jour ADT

J’ai récemment mis à jour le plugin Android SDK & Eclipse ADT vers la dernière version. Maintenant, lorsque j’essaie d’exécuter un projet Android préexistant, le LogCat affiche une ClassNotFoundException .

J’ai essayé de créer un nouvel appareil mais le problème existe toujours.

Manifeste

               

LogCat

 05-17 13:09:56.357: E/AndroidRuntime(969): FATAL EXCEPTION: main 05-17 13:09:56.357: E/AndroidRuntime(969): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.myapp/com.example.myapp.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.example.myapp.MainActivity" on path: /data/app/com.example.myapp-1.apk 05-17 13:09:56.357: E/AndroidRuntime(969): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106) 05-17 13:09:56.357: E/AndroidRuntime(969): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 05-17 13:09:56.357: E/AndroidRuntime(969): at android.app.ActivityThread.access$600(ActivityThread.java:141) 05-17 13:09:56.357: E/AndroidRuntime(969): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 05-17 13:09:56.357: E/AndroidRuntime(969): at android.os.Handler.dispatchMessage(Handler.java:99) 05-17 13:09:56.357: E/AndroidRuntime(969): at android.os.Looper.loop(Looper.java:137) 05-17 13:09:56.357: E/AndroidRuntime(969): at android.app.ActivityThread.main(ActivityThread.java:5041) 05-17 13:09:56.357: E/AndroidRuntime(969): at java.lang.reflect.Method.invokeNative(Native Method) 05-17 13:09:56.357: E/AndroidRuntime(969): at java.lang.reflect.Method.invoke(Method.java:511) 05-17 13:09:56.357: E/AndroidRuntime(969): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 05-17 13:09:56.357: E/AndroidRuntime(969): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 05-17 13:09:56.357: E/AndroidRuntime(969): at dalvik.system.NativeStart.main(Native Method) 05-17 13:09:56.357: E/AndroidRuntime(969): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.myapp.MainActivity" on path: /data/app/com.example.myapp-1.apk 05-17 13:09:56.357: E/AndroidRuntime(969): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65) 05-17 13:09:56.357: E/AndroidRuntime(969): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 05-17 13:09:56.357: E/AndroidRuntime(969): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 05-17 13:09:56.357: E/AndroidRuntime(969): at android.app.Instrumentation.newActivity(Instrumentation.java:1054) 05-17 13:09:56.357: E/AndroidRuntime(969): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097) 05-17 13:09:56.357: E/AndroidRuntime(969): ... 11 more 

J’ai remarqué que le nouveau fichier APK s’appelle myapp-1.apk , alors qu’il s’appelait généralement myapp.apk . Quelqu’un peut-il me dire comment réparer?

Essayez de vous rendre sur Projet -> Propriétés -> Chemin de génération Java -> Ordre et exportation pour vous assurer que les bibliothèques privées Android sont vérifiées pour votre projet et pour tous les autres projets de bibliothèque que vous utilisez. Nettoyez tous les projets par la suite et voyez ce qui se passe.

Je sais que je suis très en retard pour poster une réponse ici. La solution de contournement mentionnée par Krauxe ne m’a pas aidé. Mon projet a deux projets de bibliothèque et deux pots. J’ai trouvé une solution publiée par “laaptu” dans la page Les bibliothèques ne sont plus ajoutées à APK après la mise à niveau vers ADT 22 .

J’ai le kit Eclipse ADT et, en plus de la réponse de @ Krauxe, j’ai mis à jour le fichier .project d’Eclipse comme suit:

   RedbeaconPro      com.android.ide.eclipse.adt.ResourceManagerBuilder     com.android.ide.eclipse.adt.PreComstackrBuilder     org.eclipse.jdt.core.javabuilder     com.android.ide.eclipse.adt.ApkBuilder      com.android.ide.eclipse.adt.AndroidNature org.eclipse.jdt.core.javanature   

Si vous utilisez également le plug-in Maven dans votre projet, “Maven -> Maven Update …” peut provoquer le même problème que ClassNotFoundException. Comme vous le savez, le dossier de sortie des classes par défaut doit être / bin / classes, spécifié dans le fichier .classpath et Eclipse Build Path. Mais une fois que vous faites “Maven-> Maven Update …”, le dossier de sortie sera défini comme “cible / classes”. Vous pouvez le trouver (output = “target / classes”) dans votre fichier .classpath.

Fichier .classpath:

 ...    ... 

Comment résoudre ce problème , spécifiez explicitement le dossier de sortie des classes en tant que “bin / classes” dans le fichier pom.xml .

Fichier pom.xml:

 ...  src/main/java bin/classes ...