Android Eclipse NoClassDefFoundError用于外部.jar文件

Android Eclipse NoClassDefFoundError用于外部.jar文件

问题描述:

我遇到了一个奇怪的错误。我有一个使用外部库,尤其是Android项目:Android Eclipse NoClassDefFoundError用于外部.jar文件

  • Android的支持 - v4.jar(请在Android 1.6,片段支持)
  • GoogleAdMobAdsSdk-4.3.1.jar(对于广告)

该项目运行良好,直到我更新了插件的某些方面(不记得具体细节,因为我没有太注意它),然后,每当我尝试使用上述.jar中的任何类时文件(或其任何子类,甚至是我定义的),我会得到一个java.lang.NoClassDefFoundError。经过多次搜索后我找不到答案,所以我非常难过。

我相信这个问题与我的IDE设置有关,它与实际代码无关,所以我不会发布任何内容,除非它是绝对必要的。

你需要阅读 - Dealing with dependencies in Android projects

这个环节也非常有用 - ClassDefNotFoundError with ADT 17

基本上,创建一个名为libs文件夹,将您所有的文件jar里面。最近的更新会自动为您处理剩下的问题。你不需要再编辑你的路径。

+0

我真的不知道他们为什么改变ADT以这种方式行事,因为这些库将在多个项目之间共享。但至少这将是一个短期的修复。 – Dan 2012-03-25 01:49:38

+0

谢谢,很多! – AVEbrahimi 2012-04-13 06:05:37

+5

这并没有为我工作..使用ADT 20 – Cheluis 2012-11-07 14:53:54

我今天也遇到这个错误,因为更新到了Android SDK,r17。 @aneal指出的链接没有讨论的是如何处理外部运行时库(例如,在它们自己的标题下导入的链接 - 不是导入的用户库)。

解决此问题的最简单方法是更改​​构建路径中的构建顺序。只需右键点击您的项目,然后选择属性。从这里选择Java Build Path。在显示屏的顶部,选择标签订单并导出并移动GoogleAdMobAdsSdk-4.3.1.jar以上Android X(将x替换为您使用的版本)。接下来,清理你的项目并运行它。你应该很好走!

也警告其他人谁已经更新至R17与许多依赖。我在自己的构建路径上有另一个引用的项目,并且在互联网上的这个r17问题上遵循所有指示后仍然不起作用。

一个小时,我引用的项目使用外部JAR的旧版本比我的主要项目做了之后发现了。当试图编译主项目时,由于这个jar版本的差异,Eclipse会放弃,我从来没有注意到Console中的警告消息。

解决方案是对新版本的外部JAR文件复制到引用的项目的libs目录。

哇 - 这样的生产力杀手.....

Android不支持Java1.7到现在。使用合规性级别1.7构建的Jars不能用于Android应用程序。在导出jar文件之前,重建具有合规性级别5.0或6.0的Java项目。

我发现这篇文章通过谷歌和上面的答案没有解决我的问题。希望我说的会对别人有帮助。

+0

这原来是我的问题。我用1.6重新编译,瞧!我用“javac -source 6 -target 6 ...” – Jason 2013-04-19 01:02:23

我解决它的方法是:右键单击项目并选择构建路径。在出现的选择中选择configure build path。之后,看看你的库是否在库文件夹中,然后选择订单和导出选项卡,并在那里选择所有的jar文件。然后选择确定并运行您的项目。

如果您在升级到ADT 22后看到NoClassDefFoundError,试试这个在Eclipse:

  • 转到项目属性Java构建路径订单和出口标签。
  • 检查Android私有库选项。

Android Private Libraries option

+0

这就是我的诡计。非常感谢 ! – Vahron 2013-06-04 13:52:49

如果你正在使用Eclipse使用Maven的IDE(M2E)进入“Java构建路径”,然后“排序和导出”,最后检查的项目“Maven依赖”,并把它拉下来,以列表的底部。您应该在同一个工作区中执行与项目引用相同的操作。每当我在新电脑中设置项目时,都会发生这种情况。