Android Eclipse NoClassDefFoundError用于外部.jar文件

我遇到了一个奇怪的错误。 我有一个使用外部库的Android项目,特别是:

  • android-support-v4.jar(用于Android 1.6中的Fragment支持)
  • GoogleAdMobAdsSdk-4.3.1.jar(针对广告)

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

我相信这个问题与我的IDE设置有关,它与实际代码很less有关,所以除非是绝对必要的,否则我不会发布。

你需要阅读 – 处理Android项目中的依赖关系 。

此链接也是有用的 – 与ADT 17 ClassDefNotFoundError

基本上,创build一个名为libs的文件夹,并放置所有的jar文件。 最近的更新会自动照顾你rest。 你不需要再编辑你的path。

到目前为止,Android并不支持Java1.7。 使用合规性级别1.7构build的Jars不能在Android应用程序中使用。 在导出jar文件之前,用合规性级别5.0或6.0重build您的Java项目。

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

如果在升级到ADT 22后看到NoClassDefFoundError ,请在Eclipse中尝试以下操作:

  • 转到项目属性Java构buildpath订单和导出选项卡。
  • 检查Android专用库选项。

Android专用库选项

同时也警告其他已经更新到r17有很多依赖的人。 我在我的构buildpath上有另一个引用的项目,并且在互联网上的这个r17问题上遵循所有的指导后仍然不起作用。

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

解决方法是将新版本的外部jar文件复制到被引用的项目的libs目录中。

哇 – 这样的生产力杀手…..

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

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

我解决这个问题的方法是:右键单击项目并select构buildpath。 在出现的select中selectconfiguration构buildpath。 之后,看看你的库是否在库文件夹中,然后select顺序和导出选项卡,然后在那里select所有的jar文件。 然后select确定并运行您的项目。

如果您在Maven IDE(m2e)中使用Eclipse,请转到“Java构buildpath”,然后select“导出和导出”,最后检查项目“Maven Dependencies”并将其下拉到列表的底部。 您应该在同一工作区中执行与项目引用相同的操作。 每当我在新电脑上安装项目时,