加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 包含库jar时的ClassNotFoundException

发布时间:2020-12-15 02:56:48 所属栏目:Java 来源:网络整理
导读:在我的 android项目中,我在libs文件夹中添加了一个库jar. 这个jar包含三个不同的包: 谷歌GSON(com.google.gson) jboss netty(org.jboss.netty) 我自己开发的客户端应用程序,它使用这两个其他库. (com.example.core) 使用ant编译/存档jar. eclipse中没有错误
在我的 android项目中,我在libs文件夹中添加了一个库jar.
这个jar包含三个不同的包:

>谷歌GSON(com.google.gson)
> jboss netty(org.jboss.netty)
>我自己开发的客户端应用程序,它使用这两个其他库. (com.example.core)

使用ant编译/存档jar.

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

它肯定是我的jar导致这个,因为如果我从MainActivity中删除对它的类的引用,那么问题就解决了,应用程序在设备上运行.

使用apktool我检查了什么进入apk,我发现一切都被添加到smali目录,这是除了我的包(com.example.core)以外的一切.
所以我的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

有任何想法吗?
谢谢.

解决方法

您将获得NoClassDefFoundError,因为您的jar文件在运行时不可用.

为了使它在运行时可用,您必须在java构建路径中检查jar文件的复选框,如下所示:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读