NoClassDefFoundError für ein externes Bibliotheksprojekt für Android
Benutze ich eclipse für Google Android Entwicklung.
Habe ich ein Bibliothek-Projekt ([x] Is Library
in den Android-Einstellungen), die auch eine externe jar-Datei (Referenziert Bibliotheken). Das Bibliothek-Projekt verwiesen wird in einem anderen Projekt (das eigentliche Projekt, die Verwendung der library-Projekt). Dies erfolgt durch hinzufügen der das Projekt unter den Android-Einstellungen.
den source kompiliert, aber wenn ich Sie ausführen möchten, auf das Gerät, bekomme ich das NoClassDefFoundError für eine Klasse, die innerhalb der jar-Datei, die enthalten ist in der Bibliothek Projekt.
Edit: Die jar-Datei ist Hinzugefügt, um die exportierte Einträge ([x] my.jar
auf die Order and Export
-Tab aus dem library-Projekt)
Gibt es eine saubere Möglichkeit, diese arbeiten?
InformationsquelleAutor der Frage Fu86 | 2011-11-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es wurde klar gesagt in offcial API hier:
Jar-lib muss manuell Hinzugefügt werden, die abhängig-Anwendung-Projekt's build-Pfad, nicht nur die Bibliothek Projekt-build path selbst.
Update vom SDK r17:
Dies ist automatisch aktiv wird ADT jetzt, check-out neue Funktion für ADT-17.0.0 release hier:
InformationsquelleAutor der Antwort yorkw
Für diejenigen, die anschließend die Schritte(auch überprüfen Sie die Projekte in "Order and Export") und haben immer noch die java.lang.ClassNotFoundException in der API 17, der Letzte Schritt ist zu überprüfen, ob Ihr compiler läuft nicht mit Java 1.7. Wenn die 1.7 dann ändern Sie es auf 1,6 für alle Ihre Projekte. Danach wird es Fragen zum Wiederaufbau der Projekte und lief erfolgreich auf meinem Handy 🙂
Ändern Sie die java-version kompilieren in eclipse, diese befindet sich bei: Projekt-Eigenschaften - > Java-Compiler > Compiler Compliance level: 1.6
InformationsquelleAutor der Antwort Gareve
Gehen
project properties -> build path-> libraies
Wenn Sie Ihren jar-Dateien wie dieses
Seine kann Ihr problem
Add libs-Ordner in Ihr Projekt und kopieren Sie die jar-Datei in diesem Ordner. Rechten klicken Sie auf die jar-Datei und gehen Sie
build path -> add to build path
. Dann können Sie sehen, Ihr Glas alsSeine arbeitete für mich.
InformationsquelleAutor der Antwort Senthil
Ich hatte zwei Projekte mit der gleichen Bibliothek: der eine arbeitete, der andere stürzt mit
java.lang.NoClassDefFoundError
.Nachdem nichts anderes half mir, sah ich in der Datei
project.properties
im root-Verzeichnis meines Projektes.Die arbeiten Projekt hatte die
android.library.reference
Zeile (die Letzte Zeile unten), die den Absturz eines nicht:Ich manuell Hinzugefügt werden, die Linie und es begann!
(Ja, ich habe beides probiert (Projekt) Eigenschaften -- java build path -- Projekte und (Projekt) Eigenschaften -- java build path -- und-Exporte -- nichts half.)
PS Durch die Art und Weise, "Projekt-Eigenschaften" hat auch die "Projekt-Referenzen" - Registerkarte. Keine Ahnung, ob es funktionieren würde.
InformationsquelleAutor der Antwort 18446744073709551615
Hatte ich ein kleines Problem, wenn ich ein Upgrade auf ADT17 wo meine libs waren nicht richtig importiert. Stellt sich heraus, das ist, weil meine librarys wurden verbunden, so Abhängigkeiten von meinem lib-Ordner libs nicht!
Scheint librarys werden in den libs-Ordner von nun
InformationsquelleAutor der Antwort Kurru
Ich hatte ein ähnliches problem und nicht die Lösungen, die sich hier fest.
Kurze version: das GLAS war kompiliert in Java
1.7
und konnte nicht gefunden werden, indem Dalvik.Bauen wir eine interne JAR, dass wir gemeinsam über backend-und mobile-clients mit Maven. Das problem war, dass die JAR kompiliert wurde mit Java 1.7. Androids dalvik unterstützt nur Java 1.5 und 1.6. Dies ist der Grund, warum alles funktioniert in Eclipse, da es nicht kompiliert zu dalvik an dieser Stelle.
Wir auch angegeben sind die target-und source-version in das Maven-compiler-plugin zu kompilieren mit Java 1.6. Dies hat nicht funktioniert, weil nur JDK 1.7 installiert wurde auf der build-Maschine. Einen kleinen Hinweis unten auf der Maven Seite gab uns den Tipp:
Note: Merely setting the target option does not guarantee that your code actually runs on a JRE with the specified version.
Um zu sehen, wenn Sie dieses problem haben, als auch, benennen Sie Ihre
*.jar
Datei zu*.zip
entpacken Sie es, und suchen Sie in derMANIFEST.MF
- Datei für dieBuild-Jdk:
parameter, um zu sehen, welche Java-version eigentlich kompiliert Ihrem GLAS.InformationsquelleAutor der Antwort philipp
Andere Sache zu achten, ist library package-Namen.
Wenn Sie ADT21 und Sie geschehen, haben Bibliotheken, die den selben package-Namen, gibt es Fehler beim kompilieren, aber es wird immer noch kompilieren und ausführen in Eclipse, so dass Sie eine APK, fehlen einige der Ressource-Klassen. Daher der Absturz, wenn Sie die app ausführen.
Wenn Sie Sie kompilieren mit ANT dann können Sie sehen, die compile-Fehler, der sagt, dass zwei oder mehr Bibliotheken nutzen den selben package-Namen.
Dieses Problem zu beheben, benennen Sie die library-Projekt mithilfe von Android-Tools -> Umbenennen Anwendung Paket. Dann wird alles wieder normal gehen.
Es dauerte fast ganzen Tag, um dies herauszufinden...
InformationsquelleAutor der Antwort frankli