Ich habe ein Problem beim Versuch, eine Android-App auszuführen, die bis zum Hinzufügen einer zweiten externen Bibliothek zu ihrem Erstellungspfad einwandfrei funktioniert hat. Seit ich das Scoreninja-Glas hinzugefügt habe, erhalte ich jetzt einen NoClassDefFoundError, wenn ich versuche, die App auszuführen.
Hier ist die Nachricht:
02-11 21:45:26.154: ERROR/AndroidRuntime(3654): java.lang.NoClassDefFoundError: com.scoreninja.adapter.ScoreNinjaAdapter
Da alle Build-Skripte von den Android-Tools (?) Generiert werden, bin ich mir nicht sicher, was ich anderes tun kann, als Eclipse zu bereinigen, neu zu erstellen oder neu zu starten (ich habe bereits alle drei ausprobiert). Weiß jemand, wie ich das ändern kann?
Antworten:
Ich hatte dieses Problem nach dem Update von ADT.
Ich habe alle meine JAR-Dateien in einem Ordner namens "lib" gespeichert und die Jars auf normale Eclipse-Weise zum Erstellungspfad hinzugefügt. Dies funktionierte gut bis zu meinem Update.
Nach meinem Update erhielt ich den NoClassDefFoundError für eine Klasse, von der ich deutlich sehen konnte, dass sie in der JAR enthalten war (siehe die ReferencedLibraries-Klassen).
Die Lösung bestand darin, meine Jars aus dem Erstellungspfad zu entfernen und meinen Ordner "lib" in "libs" umzubenennen. Dies ist eine Ameisenkonvention und scheint die Art und Weise zu sein, wie das neue ADT Bibliotheken in einer APK-Datei findet und einschließt. Sobald ich das getan habe, hat alles gut funktioniert.
quelle
Ich musste die JAR-Bibliothek nicht in Assets oder Bibliotheken einfügen, sondern nur das Kästchen für dieses JAR unter Eigenschaften -> Java-Erstellungspfad -> "Bestellen und Exportieren" ankreuzen (es wurde zuvor aufgelistet, aber nicht ausgewählt )
quelle
Durch Hinzufügen der externen JAR-Datei zu Ihrem Erstellungspfad wird die JAR-Datei lediglich zu Ihrem Paket hinzugefügt, sie ist jedoch zur Laufzeit nicht verfügbar.
Damit das Glas zur Laufzeit verfügbar ist , müssen Sie:
assets
Ordnerquelle
import
Anweisung für externe JAR-Dateien? Ich habe sie nie benutzt.assests
Ordner zu entfernen ?Ich hatte dies für MapActivity. Builds in Eclipse erhalten NoClassDefFound im Debugger.
Ich habe vergessen, eine Bibliothek zum Manifest innerhalb des
<Application>...</Application>
Elements hinzuzufügenquelle
Ich habe die Reihenfolge der enthaltenen Projekte geändert (Eclipse / Build-Pfad konfigurieren / Reihenfolge und Export). Ich habe meine beiden abhängigen Projekte an den Anfang der Liste "Bestellen und Exportieren" verschoben. Es löste das Problem "NoClassDefFoundError".
Es ist seltsam für mich. Ich habe nicht von der Bedeutung der Reihenfolge der enthaltenen Bibliotheken und Projekte gehört. Android + Eclipse macht Spaß :)
quelle
Ich bin mir nicht sicher, ob dies damit zusammenhängt oder ob Sie überhaupt noch nach einer Antwort suchen, aber ich bin auf diesen Thread gestoßen, als ich versucht habe, denselben Fehler zu untersuchen (aber möglicherweise aus verschiedenen Gründen).
Ich konnte online keine Lösungen finden, aber eine Antwort auf einen ähnlichen Thread brachte mich zum Nachdenken und erkannte, dass ich das Projekt wahrscheinlich nur neu erstellen (oder bereinigen) musste.
Gehen Sie in Eclipse zu Projekt => Bereinigen. Wählen Sie Ihr Projekt aus und Eclipse schien es selbst zu reparieren. Für mich löste dies das Problem.
Hoffe das hilft.
quelle
Application
Klasse fehlen, was zu einem anderen Fehler führt.Ich bin auf das gleiche Problem gestoßen. Der Grund war, dass die Bibliothek, die ich verwenden wollte, mit einem Standard-JDK 7 kompiliert wurde.
Ich habe es mit den
-source 1.6 -target 1.6
Optionen neu kompiliert und es hat gut funktioniert.quelle
Dasselbe hat bei mir funktioniert: Eigenschaften -> Java-Erstellungspfad -> "Bestellen und Exportieren" Interessanterweise - warum wird dies nicht automatisch durchgeführt? Ich denke, eine Einstellung fehlt. Auch dies geschah für mich nach dem SDK-Upgrade.
quelle
Klicken Sie mit der rechten Maustaste auf Ihren Projektordner, suchen Sie im Java-Erstellungspfad nach Eigenschaften und wählen Sie die angezeigten JAR-Dateien aus. Es hat bei mir funktioniert.
quelle
John O'Connor hat Recht mit dem Problem. Das Problem bleibt bei der Installation von ADT 17 und höher. Diesen Link zur Behebung des Fehlers gefunden:
http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17
quelle
Ich habe alles aus diesem Beitrag (und einigen anderen Beiträgen) ausprobiert und es hat bei mir nicht funktioniert. Dies ist bei weitem das schrecklichste ADT-Upgrade, das ich je erlebt habe, und ich werde niemals ohne ein funktionierendes ADT-Backup aktualisieren.
Ich habe es geschafft, es zu lösen, indem ich das Projekt entfernt und es dann mithilfe einer von mir vorhandenen Quellensicherung erneut hinzugefügt habe.
quelle
Ich hatte den gleichen Fehler mit ADT22. Problem beim Überprüfen von "Android Private Libraries" in den Eigenschaften -> Java-Erstellungspfad -> Bestellen und Exportieren behoben. Wenn Sie Bibliotheksprojekte verwenden, sollten Sie dies auch für diese Projekte tun.
quelle
Alle vorhandenen Antworten funktionieren bei mir nicht, weil mein Fall etwas anders ist. Ich habe ein paar Stunden gebraucht, um es zum Laufen zu bringen. Ich benutze Eclipse.
Mein Android-Projekt enthält ein weiteres normales Java 1.6-Projekt, für das eine JAR-Datei eines Drittanbieters erforderlich ist. Der Trick ist:
Hoffe das hilft denen, die ähnliche Szenarien wie meine haben.
quelle
Manchmal muss man das gesamte externe Projekt als Bibliothek nehmen und nicht nur das Glas:
Mein Problem wurde gelöst, indem das gesamte Projekt (in meinem Fall google-play-services_lib) als Bibliothek und nicht nur das Glas hinzugefügt wurde. die Schritte dazu (von @style Antwort ):
quelle
Manchmal kommt es vor, dass jar, von dem Sie abhängig sind, nicht mit dem Tag "used-libary" in Ihrer AndroidManifest.xml enthalten ist.
Stellen Sie außerdem sicher, dass es sich innerhalb des "application" -Tags befindet.
Grüße,
Ravi
quelle
Ich hatte dieses Problem und es wurde dadurch verursacht, dass die Bibliothek nicht "exportiert" wurde. Das Problem lag nur daran, dass die .class-Dateien für einige Klassen beim Packen der APK nicht verfügbar sind. Kompilierungszeit funktioniert es ohne Exporieren
In meinem Fall habe ich die Klasse "CusrsorAdapter" verwendet und unter "JavaBuildPath-> Bestellen und Exportieren" die Unterstützung für V4-JAR nicht überprüft. Sobald das ausgewählte Problem behoben ist, ist das Problem behoben.
Um sicherzustellen, dass Sie aus dem oben genannten Grund den Fehler noClassDefFound erhalten, überprüfen Sie bitte Ihre Logacat. Zur Laufzeit wird ein unbekannter Superklassenfehler angezeigt.
quelle
Wenn Sie das berüchtigte 64k-Limit-Problem erreicht haben, müssen Sie Multidex aktivieren.
Das ist wie man es macht. https://developer.android.com/tools/building/multidex.html
quelle
Ich habe verschiedene Dinge ausprobiert und der Grund für den Fehler in meinem Fall war ein Konflikt zwischen maps.jar und Google Api in Java Build Path-> Libraries. Also, als ich die maps.jar entfernte, funktionierte es gut.
Grüße,
Wahib
quelle
Bitte stellen Sie sicher, dass sich Ihre JAR-Datei im libs-Verzeichnis Ihres Projekts befindet, wenn Sie mit Ihrer Eclipse eine neuere ADT-Version verwenden.
quelle
Ich habe genau das gleiche Problem ... Um es zu beheben, habe ich einfach meine privaten Android-Bibliotheken im "Erstellungspfad" entfernt und auf "OK" geklickt ... und als ich den "Erstellungspfad" wieder öffnete, hatte Eclipse sie erneut von selbst hinzugefügt. und dann hat es bei mir geklappt;) ...
quelle
Ich habe zwei Tage lang versucht, dieses Problem zu lösen, nachdem ich ADT aktualisiert habe. Endlich hatte ich das Glück, diesen Beitrag hier zu bekommen:
https://code.google.com/p/android/issues/detail?id=55304
das führte mich in die richtige Richtung. Wenn Sie der Lösung folgen, denken Sie daran, die Android-Support-Bibliothek aller Ihrer Projekte durch dieselbe Version zu ersetzen (entfernen Sie sie und installieren Sie sie erneut in den Projekten). Ich hoffe das hilft - viel Glück
quelle
Wenn Sie lieber wissen möchten, auf welche Dateien sich die Problemumgehung bezieht, habe ich Folgendes gefunden. Ändern Sie einfach die .classpath-Datei in
Ersetzen Sie die .classpath-Datei in allen Bibliotheksprojekten und im Android-Hauptprojekt. Die .classpath-Datei befindet sich im Stammordner des Eclipse-Projekts. Vergessen Sie natürlich nicht, Ihre eigenen Klassenpfadeinträge hinzuzufügen, falls Sie welche haben (vergleichen Sie diese also mit Ihrer aktuellen Version von .classpath).
Ich glaube, dies ist das gleiche Ergebnis wie das Durchlaufen der Eclipse-Menüs als Komponenten-Benutzer (Eclipse / Build-Pfad konfigurieren / Reihenfolge und Export).
quelle
Die Lösung hier hat bei mir funktioniert. Es geht darum, die Bibliothek in den Ordner libs zu importieren, dann die Datei build.gradle zu ändern und dann mit gradlew zu bereinigen.
quelle
Wenn Sie Ihre Reihenfolge ändern und in Ihren Projekterstellungspfad exportieren, tritt dieser Fehler nicht auf. Die andere Möglichkeit, dies zu erreichen, ist .classpath in Ihrem Projektordner.
quelle
Versuche dies:-
Schritt 1
Fügen Sie alle Bibliotheken hinzu, um pat in Eclipse zu erstellen (bedeutet, dass alle Bibliotheken referenziert werden).
Schritt 2
Löschen Sie die R.java-Datei und erstellen Sie das Projekt erneut. Keine Sorge, R.java wird automatisch neu erstellt.
Ausruhen :)
quelle
Wie ich verstanden habe, zeigt Ihr Projekt keine Fehler, da Sie das Glas eingeschlossen haben. Das Glas wird jedoch nicht verwendet, wenn Ihr Projekt auf das Gerät "exportiert" wurde. Versuche dies
Projekt -> Eigenschaften
Java Build Path / Order und Export
[✔] Dein Glas
quelle
Das passiert mir ziemlich oft.
Das letzte Mal, an das ich mich erinnern kann, wurde durch das Umschalten von Eclipse ADT (Google Special Edition) auf Android Studio und das Zurückschalten verursacht. Ich habe im Grunde alle Methoden ausprobiert, die ich im Stackoverflow finden kann und die bei mir nicht funktioniert haben.
Schließlich brachte ich die App wieder zum Laufen (kein NoCalssDeffoundError mehr), indem ich meine IDE mit ADT auf die ursprüngliche Eclipse (Kepler) umstellte.
quelle