【问题标题】:java.lang.NoClassDefFoundError with external jars in Android projectjava.lang.NoClassDefFoundError 与 Android 项目中的外部 jars
【发布时间】:2013-05-27 07:27:12
【问题描述】:

我已经在互联网上搜索了两天,我觉得我已经尝试了所有方法。 请让我知道是否有任何代码 sn-ps 可能有助于找到解决方案。

我创建了一个带有标准登录活动的 android 应用程序。在 doInBackground() 方法中,我从另一个外部类调用静态方法。由于单击提交按钮后将调用此方法,因此在运行时会发生错误。该类包含在我的文件中,并且没有编译错误。每当我点击/单击提交按钮时,我都会得到一个 java.lang.NoClassDefFoundError 引用一个类(在我的外部 jar 中),该类已使用并正确包含在我在 doInBackground() 方法中引用的外部文件中。

我所有的外部库都在“libs”文件夹中。我尝试手动将它们添加到构建路径中,并在“订单和导出”选项卡中选中它们旁边的框,而不是选中“Android Private Libraries”条目旁边的复选框。我尝试将 'gen' 目录放在 'src' 目录之上,这也没有改变任何东西。重新启动eclipse,重新导入整个项目,在构建路径中调整外部库的顺序,修复项目属性并一遍又一遍地清理项目,没有任何帮助。我已经检查过了

http://javarevisited.blogspot.de/2011/06/noclassdeffounderror-exception-in.html

并尝试了所有解决方案,但没有一个对我有用。我之前在一个库中遇到过类似的问题,我可以通过更改一些构建路径设置并重新启动 Eclipse 来解决它。但是,这对我来说不再适用了。我希望有人有其他解决方案或想法,我不知道出了什么问题......

提前谢谢大家!

呸呸

编辑:

尽管创建了一个全新的项目并将我以前的文件添加到这个新项目中,但我在新项目中仍然遇到了同样的问题。我想我知道这个错误来自哪里:当我添加我的外部库时,我仍然有从刚刚添加的 .jar 到其他 jar 的依赖项。在也添加了这些之后,编译器说我需要 java.rmi.Remote 类,它位于 Java 的 JRE 系统库 (rt.jar) 中。将整个 jre 库添加到我的项目中会使编译器错误消失,但是运行时错误仍然存​​在。 经过更多研究后,我发现我的外部库可能与 android 运行时环境不兼容,这意味着 jar 的 .class-files 没有 android 驱动设备上的 Dalvik 虚拟机所需的等效 .dex-representation .对于许多 java jar,尤其是那些设计用于 android 平台的,不会出现这些问题。

如果我错了,请纠正我,但这个解释对我来说似乎很合理。太糟糕了,因为这是当前以编程方式访问我们的数据库的唯一方法。

【问题讨论】:

  • 经常发生的一件事:文件夹被命名为“libs”而不是“libs”......你确定你的文件夹被命名为“libs”吗?
  • 是的,当然。我必须在一段时间之前更改它,因为我与另一个外部 jar 有不同的初始活动。这是我已经解决的问题,因为我之前遇到过同样的问题。
  • @Selvin - 我按照 CommonsWare 的说法进行了尝试,仍然出现同样的错误。

标签: android jar runtime-error noclassdeffounderror


【解决方案1】:

确保您已更新到最新版本的 ADT Eclipse 插件和 SDK 工具,并确保在您的项目属性中选中“Android 依赖项”。

【讨论】:

  • 谢谢Ken,Android SDK 工具有一个更新可用,我会试试看进展如何。我会及时通知你。
  • 我更新了 Android SDK 工具,重启了 eclipse 并重建了我的项目。尽管如此,还是会发生同样的错误。为什么您的视图中没有标准的 java JRE System 库条目?我的被​​选中了,我取消选中它并对'android 4.2.2'做了同样的事情。它仍然无法正常工作..
  • 嗯,我不确定它还能是什么。我唯一可以建议的另一件事是从头开始一个新的 Android 项目(使用 Android 新项目向导)并使用此外部库进行简单测试,然后使用您的旧代码从头开始构建该新项目。
  • 是的,这将是我的下一个方法。仍然很高兴知道出了什么问题。非常感谢您的帮助!
猜你喜欢
  • 2011-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-26
  • 2011-09-21
  • 2015-12-22
  • 1970-01-01
相关资源
最近更新 更多