ClassNotFoundException beim einbinden einer Bibliothek jar

In mein android-Projekt habe ich ein jar-Bibliothek in der libs Ordner.

Diese jar-Datei enthält drei verschiedene Pakete:

  1. google GSON (com.google.gson)
  2. jboss netty (org.jboss.netty)
  3. Eine client-Anwendung, die ich selbst entwickelt habe, welches verwendet diese zwei anderen libs. (com.Beispiel.Kern)

Jar kompiliert/archiviert mit Hilfe von ant.

Gibt es keine Fehler in eclipse, aber wenn ich versuche zu laufen meine android-app auf einem Gerät bekomme ich diese:

E/AndroidRuntime(23807): FATAL EXCEPTION: main
E/AndroidRuntime(23807): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.project/com.example.project.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.example.project.MainActivity" on path: /data/app/com.example.project-1.apk
E/AndroidRuntime(23807):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106)
E/AndroidRuntime(23807):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
E/AndroidRuntime(23807):    at android.app.ActivityThread.access$600(ActivityThread.java:141)
E/AndroidRuntime(23807):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
E/AndroidRuntime(23807):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(23807):    at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(23807):    at android.app.ActivityThread.main(ActivityThread.java:5039)
E/AndroidRuntime(23807):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(23807):    at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(23807):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
E/AndroidRuntime(23807):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
E/AndroidRuntime(23807):    at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(23807): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.project.MainActivity" on path: /data/app/com.example.project-1.apk
E/AndroidRuntime(23807):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65)
E/AndroidRuntime(23807):    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
E/AndroidRuntime(23807):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
E/AndroidRuntime(23807):    at android.app.Instrumentation.newActivity(Instrumentation.java:1054)
E/AndroidRuntime(23807):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
E/AndroidRuntime(23807):    ... 11 more

Und es ist definitiv mein Glas, verursacht dies, weil wenn ich Sie entfernen Verweise auf das s-Klassen aus der MainActivity dann ist das problem gelöst und die app läuft auf dem Gerät.

Mit apktool ich überprüft, um zu sehen, was geht in die apk, und ich fand, dass alles, was Hinzugefügt wird, die smali - Verzeichnis, dass ist alles, außer mein Paket (com.Beispiel.core).

Also alle android-app-Klassen (com.Beispiel.Projekt), die gson (com.google.gson) und netty (org.jboss.netty) aus meine jar gibt es aber nicht com.Beispiel.core.

Meinem Umfeld:

Eclipse 4.2.1

ADT 21.0.1

Java 7 (oracle)

Geräten, die ich getestet auf:

Samsung galaxy S2

LG nexus 4

Irgendwelche Ideen?
Danke.

InformationsquelleAutor Nitzan Tomer | 2013-01-31

Schreibe einen Kommentar