193 votes

NoClassDefFoundError - Eclipse et Android

J'ai un problème en essayant d'exécuter une application Android qui, jusqu'à l'ajout d'une deuxième bibliothèque externe à son chemin de construction, fonctionnait bien. Depuis que j'ai ajouté le bocal scoreninja, j'obtiens un message d'erreur NoClassDefFoundError lorsque j'essaie de lancer l'application.

Voici le message :

02-11 21:45:26.154: ERROR/AndroidRuntime(3654): java.lang.NoClassDefFoundError: com.scoreninja.adapter.ScoreNinjaAdapter

Comme tous les scripts de construction sont générés par les outils Android ( ?), je ne suis pas sûr de ce que je peux faire à part nettoyer et reconstruire ou redémarrer eclipse (j'ai déjà essayé les trois). Quelqu'un sait-il comment je peux modifier cela ?

234voto

John O'Connor Points 3296

J'ai eu ce problème après avoir mis à jour ADT.

Je stockais tous mes fichiers JAR dans un dossier appelé "lib" et j'ajoutais les jars au chemin de construction de la manière normale d'Eclipse. Cela fonctionnait bien jusqu'à ma mise à jour.

Après ma mise à jour, je recevais l'erreur NoClassDefFoundError pour une classe dont je pouvais clairement voir qu'elle était incluse dans le bocal (en vérifiant les classes ReferencedLibraries).

La solution a été de supprimer mes jars du chemin de construction et de renommer mon dossier "lib" en "libs". Il s'agit d'une convention Ant, et il semble que ce soit la façon dont le nouvel ADT trouve et inclut les bibliothèques dans un fichier .apk. Une fois que j'ai fait cela, tout a fonctionné correctement.

100voto

Till Points 1283

Je n'ai pas eu à mettre le jar-library dans assets ou lib(s), mais seulement à cocher la case pour ce jar dans Properties -> Java Build Path -> "Order and Export" (il était listé avant, mais pas sélectionné).

68voto

Anthony Forloney Points 30083

En ajoutant le jar externe dans votre chemin de construction, vous ajoutez simplement le jar à votre paquetage, mais il ne sera pas disponible pendant l'exécution.

Pour que le bocal soit disponible au temps de fonctionnement vous devez :

  • Mettez le bocal sous votre assets dossier
  • Incluez cette copie de la jarre dans votre chemin de construction.
  • Allez dans l'onglet "Exportation" de la même fenêtre popup.
  • Cochez la case correspondant à la jarre nouvellement ajoutée

48voto

brian.clear Points 2424

J'avais ceci pour MapActivity. La construction dans Eclipse obtient NoClassDefFound dans le débogueur.

J'ai oublié d'ajouter la bibliothèque au manifeste, à l'intérieur <Application>...</Application> élément

<uses-library android:name="com.google.android.maps" />

27voto

componavt Points 271

J'ai changé l'ordre des projets inclus (Eclipse / Configure Build Path / Order and Export). J'ai déplacé mes deux projets dépendants en haut de la liste "Order and Export". Cela a résolu le problème "NoClassDefFoundError".

C'est étrange pour moi. Je n'avais pas entendu parler de l'importance de l'ordre des bibliothèques et des projets inclus. Android + Eclipse, c'est sympa :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X