2012-03-25 3 views
2

Ich bin nach der Aktualisierung meiner SDK-Tools von Version 15 auf 17 gestolpert, es scheint, als gäbe es einige Änderungen unter der Haube, die mich einen langen Abend kosten. Dachte, ich teile dies so hoffentlich jemand anderes Nerven ich sparen:Android kann keine Klassen von externen Jars auflösen

Nach meinem Projekt zu aktualisieren würde noch kompilieren und bauen, aber zur Laufzeit alle Arten von Fehlern und Ausnahmen werfen NoClassDefFoundError, ClassDefNotFoundException oder die Dalvik vm in logcat beschweren, dass es nicht war in der Lage, einige Klassen oder Superklassen aufzulösen. Es stellte sich heraus, dass es nicht möglich war, Klassen zu laden, die sich in externen JAR-Dateien befanden (die sich im Klassenpfad befanden).

Lösung/Antwort: (leider Stackoverflow mich nicht lassen diese Antwort aufgrund mangelnder Ruf)

Es stellte sich heraus, dass nur externe Bibliotheken seit Revision 17 der SDK-Tools, die in Java exportiert markiert werden wird Teil der apk zur Laufzeit. Die Lösung ist also einfach:

Gehen Sie zu Java Build Path -> Bestellen und Exportieren und aktivieren Sie das Kontrollkästchen neben all Ihren Gläsern, die Sie zur Laufzeit benötigen (sollte in der Regel alle sein).

Ich bin mir nicht sicher, ob ich das vorher hätte tun sollen, aber mit Revision 15 und früher war das nie ein Problem.

+0

Dies ist ein gutes Beispiel für einen, den Sie akzeptieren sollten. Nur zu deiner Information. :-) – Gray

Antwort

1

Fügen Sie einfach die Bibliothek Jar-Dateien zu Ihnen apk. Es ist sehr einfach, es zu tun.

  1. Klicken Sie mit der rechten Maustaste auf das Projekt und dann auf Eigenschaften.
  2. Klicken Sie auf Java Build Path und wechseln Sie zum Tab Bestellen und Exportieren.
  3. Klicken Sie auf Select All auf der rechten Seite. Klicken Sie auf ok.
  4. Erstellen Sie die Anwendung neu und versuchen Sie, die Anwendung auszuführen.

Jetzt sollte es funktionieren. Lemme wissen, ob es für dich funktioniert hat ..?

+0

Ja, das hat funktioniert (teilweise weil es die gleiche Antwort ist wie die, die ich oben in meiner Beschreibung angegeben habe :-)) Der Trick besteht darin, die Gläser nicht nur in den Klassenpfad einzuschließen, sondern sie auch als exportierte – Daniel

+1

zu markieren Kannst du das als Antwort akzeptieren? – Pavandroid

Verwandte Themen