首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android上Java库中代码的NoClassDefFoundError

Android上Java库中代码的NoClassDefFoundError
EN

Stack Overflow用户
提问于 2011-12-30 18:47:32
回答 24查看 110.9K关注 0票数 77

我在我的用户中经常遇到错误。应用程序在启动期间崩溃。当MainActivity应该被加载时,VM显然找不到该类。我想不出为什么。该应用程序的架构是,有一个共同的项目,我的免费版和专业版都在使用。不知道这是否相关。请参阅下面的堆栈跟踪。有什么想法吗?

代码语言:javascript
复制
java.lang.NoClassDefFoundError: com.android.common.MainActivity
at com.mycompany.myapp.Splash.onCreate(Splash.java:23)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3687)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.android.common.MainActivity in loader     dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/data/app/com.android.pro-1.apk]

理查德编辑:感谢你在下面的评论,。现在,我已经将com.android.Splash更改为其他值。不管怎么说,这不是真正的类名。我的错...!

EN

回答 24

Stack Overflow用户

回答已采纳

发布于 2012-10-03 13:19:48

我也有同样的问题,我做了以下工作来解决这个问题。

  1. 转到project.
  2. Select "Java构建路径“的”属性“
  3. 选择”排序和导出“选项卡
  4. 您应该在此处看到所选项目的"src”和"gen“路径和依赖项。
  5. 列出它们的顺序首先是"src”,然后是"gen“path

H111I切换它们,以便在”src“H212和G213之前生成"gen”文件夹

gen -项目中的自动化代码(来自依赖项和引用)

src -项目中的源代码

不需要重新启动Eclipse。它才刚刚开始工作。

老实说,我从来没有尝试过"Android工具>修复项目属性“,有时它可能会做同样的事情。我不知道,我只是在看到错误消息后才这样做的,认为构建路径有问题。

编辑

后来,这是不够的,我又得到了错误。然后,我“检查”了该视图中列出的所有依赖项。现在它又能工作了。到目前一切尚好。如果它再次失败,我会保持更新。

仅供参考:在我的最后一次尝试中,我尝试了“安卓工具>修复项目属性”,但它对我来说不起作用。

票数 125
EN

Stack Overflow用户

发布于 2012-10-31 01:21:50

我目前使用的是SDK 20.0.3,之前的解决方案对我都不起作用。

我就能把事情做好

  • 右键单击Android项目
  • ,然后选择Build Path -> Link Source以打开链接源对话框。
  • 然后我指定了Java项目的'src‘文件夹,并为其指定了一个不同于默认名称'src’的名称(例如'src2‘)。
  • 您现在可以右键单击->删除新的’src2‘文件夹。

这带来了在构建Android项目时为Dalvik VM而不是Java VM编译的Java类文件。这允许Android Library jar文件中的Java class文件在创建Android项目.apk时通过dexing。现在,当应用程序运行时,找到了Java项目类,而不是抛出Java.lang.NoClassDefFoundError。

如果您想使用jar文件而不是链接源代码,那么您将需要创建一个Library Android项目。(在属性-> Android中签入'is library‘的安卓项目。)然后,您需要如上所述将Java项目的源代码链接到Android库项目,或者将源文件从Java项目的“src”文件夹复制到Android库项目的“src”文件夹。构建Android库项目。然后,您将能够将创建的Android Project jar文件复制到Android文件夹的'libs‘文件夹中,因为其中的类文件是在构建Android项目时为Davlik VM而不是Java VM编译的。这允许Android Library jar文件中的Java class文件在创建Android项目.apk时通过dexing。现在,当应用程序运行时,将找到Java项目类,而不是抛出Java.lang.NoClassDefFoundError。

票数 18
EN

Stack Overflow用户

发布于 2013-06-21 14:13:31

尝试转到项目、->属性、-> Java Build Path、->、Order & Export,并确保您的项目和您正在使用的所有其他库项目都选中了Android Private Libraries。我通过下面的链接NoClassDefFoundError Android Project获得了解决方案

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8678630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档