gpt4 book ai didi

Eclipse 中的 java.lang.NoClassDefFoundError,但 Ant 中没有

转载 作者:太空狗 更新时间:2023-10-29 13:38:18 25 4
gpt4 key购买 nike

我在一些 Android 项目和 Eclipse 中遇到了一个很奇怪的问题。我有许多 Android 项目都使用了很多相同的代码,因此将大量代码移到了 Android Library 项目中。很长一段时间以来,这对三个应用程序都非常有效。今天,我也想将这个库用于第四个应用程序,但遇到了麻烦。基本上情况是这样的:

  • 库项目:包含一组 Activity 以及一些实用程序类
  • 新项目:在特定情况下实例化图书馆项目中的一项 Activity 。

这应该都是微不足道的事情,我什至在其他三个应用程序中用完全相同的 Activity 从完全相同的库项目中完成了完全相同的事情。在新项目中,我在项目属性中引用了库项目,并将库项目中的 Activity 添加到 AndroidManifest.xml。 Eclipse 现在识别了这一点,并让我引用该 Activity 。一切都很好。

应用程序运行良好,直到我执行从库项目启动 Activity 的操作。应用程序退出,logcat 告诉我:

FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: no.company.application.base.SomeDetailActivity
at no.company.someotherapplication.SomeListActivity$4.onClick(SomeListActivity.java:466)
at android.view.View.performClick(View.java:2538)
at android.view.View$PerformClick.run(View.java:9152)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.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.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
at dalvik.system.NativeStart.main(Native Method)

这就是乐趣的开始。我知道库项目与 .apk bundle 在一起,因为我有一些来自该项目运行的实用程序代码。但是当从 Ant 编译这个确切的项目时,通过使用命令 ant debug 然后 ant installd,应用程序运行得很好,包括启动 Activity 。因此,完全相同的项目设置在 Ant 上运行良好,但在 Eclipse 上运行不佳。

我尝试了通过谷歌搜索找到的技巧,例如清理所有项目、删除特定项目的 .project 和 .classpath 并重新生成它们。我还通过将 list 文件与工作项目中的 list 文件进行比较来确保我的 list 文件是正确的。无论我做什么,我都会再次遇到这个问题。由于它在 Ant 中编译和运行得很好,在我看来项目本身没有任何问题,但我确实需要能够通过 Eclipse 编译它。

编辑: 我刚刚使用 dexdump 工具对 Eclipse 创建的 apk 中的 classes.dex 进行了反编译,并能够确认该类与 apk bundle 在一起。我找到了一个具有正确类描述符和实例字段的类。另一方面,我也对Ant生成的版本进行了反编译,发现有不少差异。太多了,不能在这里重复。使用 Ant 和 Eclipse 时生成的文件是否应该相同?

最佳答案

我刚遇到同样的问题。在我的例子中,我为 Java 构建路径正确设置了它,但忘记添加库。转到 Properties -> Android,然后在 Library 部分单击“Add...”,然后添加库项目。之后它按预期运行。

关于Eclipse 中的 java.lang.NoClassDefFoundError,但 Ant 中没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8474595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com