J'ai un projet Android dans Eclipse IDE qui fonctionnait. Après quelques importations et tests, le message d'erreur suivant apparaît: Java.lang.NoClassDefFoundError
.
Dans mon projet, j'ai deux packages: le principal et le second avec quelques classes.
Lorsque j'essaie d'instancier un objet de la deuxième classe de package dans la classe d'activité principale, j'obtiens cette erreur.
Voici le logcat:
FATAL EXCEPTION: main
Java.lang.NoClassDefFoundError: com.neurospeech.wsclient.MDPIforEditorialBoard
at milos.mdpi.Journals.<init>(Journals.Java:41)
at Java.lang.Class.newInstanceImpl(Native Method)
at Java.lang.Class.newInstance(Class.Java:1409)
at Android.app.Instrumentation.newActivity(Instrumentation.Java:1040)
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:1777)
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:1893)
at Android.app.ActivityThread.access$1500(ActivityThread.Java:135)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1054)
at Android.os.Handler.dispatchMessage(Handler.Java:99)
at Android.os.Looper.loop(Looper.Java:150)
at Android.app.ActivityThread.main(ActivityThread.Java:4389)
at Java.lang.reflect.Method.invokeNative(Native Method)
at Java.lang.reflect.Method.invoke(Method.Java:507)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:849)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:607)
at dalvik.system.NativeStart.main(Native Method)
J'ai trouvé la solution à mon problème:
La solution peut être trouvée ici: http://Android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17
Avez-vous récemment mis à jour votre plugin Eclipse Android (adt r17)?). Le lien suivant pourrait vous aider:
Comment réparer le classdefnotfounderror avec adt-17
Mise à jour: Un an s'est écoulé depuis que la question s'est posée. Je garderai le lien, car même en 2013, il semble que certaines personnes puissent résoudre le problème. Mais veuillez faire attention à ce que vous faites, voir le commentaire Erics ci-dessous. Current ADT-Version est 22, je recommande d'utiliser la version la plus récente.
Éditez le chemin de construction dans cet ordre, cela a fonctionné pour moi.
Assurez-vous que le /gen
est avant /src
J'ai résolu le problème en ajoutant simplement les bibliothèques privées du projet principal à exporter ici:
Project Properties->Java Build Path->Order And Export
Et assurez-vous que Android Les bibliothèques privées sont cochées.
Capture d'écran:
Assure-toi google-play-services_lib.jar
et google-play-services.jar
sont vérifiés. Nettoyez le projet et relancez-vous. L'exception classNotfound disparaît.
Vous pouvez également obtenir cette erreur si vous essayez d'inclure un fichier jar compilé avec jdk 1.7 au lieu de 1.6.
Dans mon cas, j'ai compris cela en essayant de conditionner mon application avec les scripts Ant fournis par le SDK, au lieu d'ADT, et j'ai remarqué ces erreurs, qu'ADT ne m'a pas montrées:
[dex] Pre-Dexing libjingle_peerconnection.jar -> libjingle_peerconnection-2f82c9bf868a6c58eaf2c3b2fe6a09f3.jar
[dx]
[dx] trouble processing:
[dx] bad class file magic (cafebabe) or version (0033.0000)
[dx] ...while parsing org/webrtc/StatsReport$Value.class
[dx] ...while processing org/webrtc/StatsReport$Value.class
J'ai recompilé mon pot avec jdk 1.6 et l'erreur a été corrigée.
J'ai rencontré ce problème plusieurs fois en ouvrant d'anciens projets incluant d'autres bibliothèques Android. Ce qui fonctionne pour moi, c'est de:
déplacez Android vers le haut dans l'onglet Commande et exportation et désélectionnez-le.
Oui, cela fait vraiment la différence. Peut-être qu'il est temps pour moi de laisser tomber ADT pour Android Studio!
Essayez d'aller à Project -> Properties -> Java Build Path -> Order & Export
Et Confirmez Android Bibliothèques privées sont cochés pour votre projet et pour tous les autres projets de bibliothèque que vous utilisez dans votre application.
Allez dans Commander et exporter depuis les propriétés du projet et assurez-vous d'inclure les bocaux requis dans l'exportation, cela m'a été utile.
Après vérification Java Chemin de construction, ajoutez ensuite des lignes de code dans le fichier manifeste.
<meta-data
Android:name="com.google.Android.gms.version"
Android:value="@integer/google_play_services_version" />