安卓 java。Eclipse中的lang.NoClassDefFoundError,但不适用于Ant
我对一些Android项目和Eclipse有一个非常奇怪的问题。我有很多Android项目都使用了很多相同的代码,因此将很多代码移到了Android库项目中。很长一段时间以来,这在三个应用程序中都非常有效。今天,我还想用这个库开发第四个应用程序,结果遇到了麻烦。基本情况如下:
- 库项目:包含一组活动以及一些实用程序类
- 新建项目:在特定情况下实例化库项目中的一个活动李>
这些应该都是琐碎的东西,我甚至在另外三个应用程序中做了同样的事情,使用了完全相同的库项目中完全相同的活动。在新项目中,我在项目属性中引用了库项目,并将库项目中的活动添加到AndroidManifest中。xml。Eclipse现在认识到这一点,并允许我引用活动。一切都很好
在我执行从库项目启动活动的操作之前,应用程序运行良好。应用程序退出,logcat告诉我:
FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: no.company.application.base.SomeDetailActivity
at no.company.someotherapplication.SomeListActivity$4.onClick(SomeListActivity.java:466)
at 安卓.view.View.performClick(View.java:2538)
at 安卓.view.View$PerformClick.run(View.java:9152)
at 安卓.os.Handler.handleCallback(Handler.java:587)
at 安卓.os.Handler.dispatchMessage(Handler.java:92)
at 安卓.os.Looper.loop(Looper.java:123)
at 安卓.app.ActivityThread.main(ActivityThread.java:3691)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:605)
at dalvik.system.NativeStart.main(Native Method)
这就是乐趣的开始。我知道图书馆项目与。apk,因为我有一些运行此项目的实用程序代码。但是当从Ant编译这个确切的项目时,通过使用命令ant debug
和ant installd
,应用程序运行良好,包括启动活动。因此,完全相同的项目设置在Ant上运行良好,但在Eclipse上运行不好
我尝试了通过谷歌搜索找到的技巧,比如清理所有项目,删除。项目和。特定项目的类路径,并重新生成它们。通过将清单文件与工作项目中的清单文件进行比较,我还确保了清单文件的正确性。不管我做什么,我都会再次遇到这个问题。由于它使用Ant编译和运行得很好,在我看来,项目本身并没有什么问题,但我确实需要能够通过Eclipse编译它
编辑:我刚刚反编译了类。Eclipse使用dextump工具创建的apk中的dex,并且能够确认该类与apk绑定。我找到了一个具有正确的类描述符和实例字段的类。另一方面,我还对Ant生成的版本进行了反编译,得到了一些差异。这里重复的太多了。当使用Ant和Eclipse时,生成的文件应该是相同的吗
# 1 楼答案
我也遇到了同样的问题。在我的例子中,我为Java构建路径正确地设置了它,但忘记添加库。转到属性->;然后点击“添加…”在“库”部分中,然后添加库项目。之后,它按预期运行
# 2 楼答案
我解决了在最终项目的构建路径中包含jar的问题。图书馆的建筑路径显然是不够的
这很糟糕,但至少能起作用
# 3 楼答案
有时android插件不能很好地生成资源,这会导致此类问题。尝试以下简单步骤:
如果这是一个问题,那么它应该在项目编译后解决它