在我的android項目中,我在libs
文件夾中添加了一個庫jar。
這個jar文件包含三個不同的軟件包:包含庫jar時出現ClassNotFoundException
- 谷歌GSON(com.google.gson)
- JBoss的網狀(org.jboss.netty)
- 我自己開發的客戶端應用程序,它使用這兩個其他庫。 (com.example.core)
該jar是使用ant編譯/存檔的。
有在Eclipse中沒有錯誤,但是當我嘗試在設備上運行我的Android應用我得到這個:
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
而且這絕對是我罐子,是造成這一點,因爲如果我刪除,以引用它是MainActivity中的類,然後解決問題並在設備上運行應用程序。
使用apktool我查看了apk中的內容,發現所有內容都被添加到smali
目錄,除了我的包(com.example.core)外,其他所有內容都被添加到了smali
目錄中。
因此,我的jar中的所有android應用程序類(com.example.project),gson(com.google.gson)和netty(org.jboss.netty)都存在,但不包含com.example.core。
我的環境:
的Eclipse 4.2.1
ADT 21.0.1
的Java 7(甲骨文)
設備我測試的:
三星Galaxy S2
LG的Nexus 4
有任何想法嗎? 謝謝。
我沒有在訂單和出口標籤罐子裏,只有src和根文件夾和Android的依賴和Android 4.2。 –
(java構建路徑/庫)點擊添加jar,並添加你從libs文件夾中的gson jar文件 – Anand
從我讀過的,在新版本的ADT中,你不需要這樣做,實際上你不應該這樣做那。它應該足以將所需的庫添加到項目的'libs'目錄中。 –