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 pot scoreninja, j'obtiens maintenant un NoClassDefFoundError lorsque j'essaie d'exécuter 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 génération sont générés par les outils Android (?), Je ne sais pas quoi faire d'autre que le nettoyage et la reconstruction ou le redémarrage d'Eclipse (j'ai déjà essayé les trois). Est-ce que quelqu'un sait comment je peux modifier cela?
Réponses:
J'ai eu ce problème après la mise à jour d'ADT.
Je stockais tous mes fichiers JAR dans un dossier appelé "lib" et j'ajoutais les fichiers JAR au chemin de génération de la manière Eclipse normale. Cela a bien fonctionné jusqu'à ma mise à jour.
Après ma mise à jour, j'obtenais le NoClassDefFoundError pour une classe que je pouvais clairement voir était incluse dans le pot (en vérifiant les classes ReferencedLibraries).
La solution était de supprimer mes pots du chemin de compilation et de renommer mon dossier "lib" en "libs". Il s'agit d'une convention de fourmi, et semble être 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 bien fonctionné.
la source
Je n'ai pas eu à mettre la bibliothèque de pots dans des actifs ou des bibliothèques, mais je ne coche que la case de ce pot dans Propriétés -> Chemin de construction Java -> "Ordonner et exporter" (elle était répertoriée avant, mais non sélectionnée) )
la source
En ajoutant le pot externe dans votre chemin de build, vous ajoutez simplement le pot à votre package, mais il ne sera pas disponible pendant l'exécution.
Pour que le pot soit disponible au moment de l' exécution , vous devez:
assets
dossierla source
import
déclaration pour les fichiers jar externes? Je ne les ai jamais utilisés.assests
approche par dossier?J'avais ceci pour MapActivity. Builds dans Eclipse obtient NoClassDefFound dans le débogueur.
Vous avez oublié d'ajouter la bibliothèque au manifeste, à l'intérieur de l'
<Application>...</Application>
élémentla source
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 "Commander et exporter". Il a résolu le problème "NoClassDefFoundError".
C'est étrange pour moi. Je n'ai pas entendu parler de l'importance de l'ordre des bibliothèques et des projets inclus. Android + Eclipse est amusant :)
la source
Je ne sais pas si cela est lié, ou si vous cherchez même une réponse, mais je suis tombé sur ce fil en essayant de rechercher la même erreur (mais peut-être pour différentes raisons).
Je n'ai trouvé aucune solution en ligne, mais une réponse sur un sujet similaire m'a fait réfléchir et m'a rendu compte que je devais probablement juste reconstruire (ou nettoyer) le projet.
Dans Eclipse, accédez à Projet => Nettoyer. Sélectionnez votre projet et Eclipse a semblé le réparer lui-même. Pour moi, cela a résolu le problème.
J'espère que cela t'aides.
la source
Application
classe, ce qui entraîne une erreur différente.J'ai rencontré le même problème. La raison en était que la bibliothèque que j'essayais d'utiliser avait été compilée avec un JDK 7 standard.
Je l'ai recompilé avec les
-source 1.6 -target 1.6
options et cela a bien fonctionné.la source
La même chose a fonctionné pour moi: Propriétés -> Java Build Path -> "Order and Export" Fait intéressant - pourquoi cela ne se fait pas automatiquement? Je suppose que certains paramètres sont manquants. Cela m'est également arrivé après la mise à niveau du SDK.
la source
Cliquez avec le bouton droit sur votre dossier de projet, recherchez Propriétés dans le chemin de génération Java et sélectionnez les fichiers jar que vous voyez. ça a marché pour moi.
la source
John O'Connor a raison sur la question. Le problème reste avec l'installation d'ADT 17 et supérieur. Trouvé ce lien pour corriger l'erreur:
http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17
la source
J'ai tout essayé depuis ce post (et quelques autres), et cela n'a pas fonctionné pour moi, c'est de loin la mise à niveau ADT la plus terrible que j'ai connue, et je ne mettrai jamais à niveau sans une sauvegarde ADT fonctionnelle.
J'ai réussi à le résoudre en supprimant le projet, puis en l'ajoutant à nouveau à l'aide d'une sauvegarde source que j'avais.
la source
J'ai eu cette même erreur avec ADT22. Résolution de la vérification des "bibliothèques privées Android" dans les propriétés -> Chemin de génération Java -> Commande et exportation. Si vous utilisez des projets de bibliothèque, la même chose devrait également être faite pour eux.
la source
Toutes les réponses existantes ne fonctionnent pas pour moi car mon cas est un peu différent. Il m'a fallu quelques heures pour le faire fonctionner. J'utilise Eclipse.
Mon projet Android comprend un autre projet Java 1.6 normal, qui nécessite un fichier jar tiers. L'astuce est:
J'espère que cela aidera ceux qui ont des scénarios similaires comme le mien.
la source
il faut parfois prendre tout le projet externe comme bibliothèque et pas seulement le pot:
mon problème a été résolu en ajoutant tout le projet (dans mon cas, google-play-services_lib) comme bibliothèque et pas seulement le pot. les étapes pour y arriver (de la réponse @style ):
la source
Parfois, cela se produira en raison de l'absence de jar, dont vous avez la dépendance, avec la balise "uses-libary" dans votre AndroidManifest.xml.
Assurez-vous également qu'il doit se trouver dans la balise "application".
Cordialement,
Ravi
la source
J'ai eu ce problème et il a été causé par le fait de ne pas "exporter" la bibliothèque. Le problème vient simplement du fait que les fichiers .class pour certaines classes ne sont pas disponibles lors de l'empaquetage de l'APK. Le temps de compilation fonctionnera correctement sans exporimentation
Dans mon cas, j'utilisais la classe "CusrsorAdapter" et sous "JavaBuildPath-> Order and Export", je n'ai pas vérifié le support V4. Une fois sélectionné, le problème a disparu.
Pour vous assurer que vous obtenez une erreur noClassDefFound pour la raison ci-dessus, veuillez vérifier votre logacat, vous verrez une erreur de super classes inconnue au moment de l'exécution.
la source
En fait, vous avez atteint le fameux problème de limite de 64k, vous devez activer le multidex.
Voilà comment vous le faites. https://developer.android.com/tools/building/multidex.html
la source
J'ai essayé différentes choses et la raison de l'erreur dans mon cas était un conflit entre maps.jar et Google Api dans Java Build Path-> Libraries. Donc, quand j'ai supprimé le maps.jar, cela a bien fonctionné.
Cordialement,
wahib
la source
veuillez vous assurer que votre fichier jar se trouve dans le répertoire libs de votre projet car vous utilisez une version ADT plus récente avec votre éclipse.
la source
J'ai exactement le même problème ... Pour le corriger, je viens de supprimer mes bibliothèques privées Android dans "chemin de génération" et j'ai cliqué sur ok ... et quand j'ai ouvert op le "chemin de génération" à nouveau, eclipse les avait à nouveau ajoutées par lui-même, et puis ça a marché pour moi;) ...
la source
j'ai passé deux jours à essayer de résoudre ce problème après la mise à jour d'ADT. enfin j'ai eu la chance d'avoir ce post ici:
https://code.google.com/p/android/issues/detail?id=55304
ce qui m'a conduit dans la bonne direction. lorsque vous suivez la solution - n'oubliez pas de remplacer la bibliothèque de support Android de tous vos projets par la même version (supprimez-la et réinstallez-la dans les projets). j'espère que cela aide - bonne chance
la source
Si vous préférez savoir à quels fichiers la solution de contournement est liée, voici ce que j'ai trouvé. Changez simplement le fichier .classpath en
Remplacez le fichier .classpath dans tous les projets de bibliothèque et dans le projet Android principal. Le fichier .classpath se trouve dans le dossier racine du projet eclipse. N'oubliez pas d'ajouter vos propres entrées de chemin de classe, si vous en avez (comparez donc avec votre version actuelle de .classpath).
Je crois que c'est le même résultat que de parcourir les menus d'éclipse comme l'explique l'utilisateur du composant ci-dessus (Eclipse / Configurer le chemin de construction / Commander et exporter).
la source
La solution ici a fonctionné pour moi. Il s'agit d'importer la bibliothèque dans le dossier libs, puis de modifier le fichier build.gradle puis de nettoyer avec gradlew.
la source
Si vous modifiez votre commande et exportez dans le chemin de génération de votre projet, cette erreur ne se produira pas. L'autre façon d'y parvenir est via .classpath dans votre dossier de projet.
la source
Essaye ça:-
Étape 1
Ajouter toutes les bibliothèques pour construire pat dans Eclipse (signifie que toutes les bibliothèques référencées sont des bibliothèques)
Étape 2
Supprimez le fichier R.java et générez à nouveau le projet. Ne vous inquiétez pas, R.java sera automatiquement recréé.
Chill :)
la source
Si j'ai bien compris, votre projet ne montre aucune erreur, car vous avez inclus le pot. Mais le Jar ne sera pas utilisé lorsque votre projet sera "exporté" vers l'appareil. Essaye ça
Projet -> Propriétés
Java Build Path / Order and Export
[✔] Votre pot
la source
Cela m'arrive très souvent.
La dernière fois que je me suis souvenu, cela a été causé par le basculement de l'Eclipse ADT (édition spéciale de Google) vers Android Studio et le retour. J'ai essentiellement essayé toutes les méthodes que je peux trouver sur stackoverflow qui ne fonctionnaient pas pour moi.
Finalement, j'ai fait fonctionner l'application à nouveau (plus de NoCalssDeffoundError) en passant mon IDE à Eclipse d'origine (Kepler) avec ADT.
la source