我遇到了一个奇怪的错误。我有一个使用外部库的Android项目,特别是:
该项目运行正常,直到我更新了插件的某些方面(由于我没有过多关注它而无法回忆具体细节),之后,每当我尝试使用上述.jar文件中的任何类时(或者它的任何子类,甚至是我定义的子类),我会得到一个java.lang.NoClassDefFoundError。经过多次搜索后我找不到答案,所以我真的很难过。
我认为这个问题与我的IDE设置方式有关,而且与实际代码没什么关系,所以除非绝对必要,否则我不会发帖。
答案 0 :(得分:35)
您需要阅读此内容 - Dealing with dependencies in Android projects。
此链接也很有用 - ClassDefNotFoundError with ADT 17
基本上,创建一个名为libs
的文件夹,并将所有jar
个文件放在里面。最近的更新将自动为您处理剩下的事情。您不再需要编辑路径了。
答案 1 :(得分:7)
Android到目前为止还不支持Java1.7。使用合规级别1.7构建的Jars无法在Android应用程序中使用。在导出jar文件之前,使用合规性级别5.0或6.0重建Java项目。
我通过谷歌发现这篇文章,上面的答案并没有解决我的问题。希望我所说的对别人有所帮助。
答案 2 :(得分:7)
如果您在升级到 ADT 22 后看到NoClassDefFoundError
,请在Eclipse中尝试:
答案 3 :(得分:1)
同时向其他已更新为r17且具有许多依赖关系的人发出警告。我在构建路径上有另一个引用的项目,并且在遵循此r17问题上的所有指示后仍然无法正常工作。
一小时后发现,我引用的项目使用的是外部Jar的旧版本而不是我的主项目。在尝试编译主项目时,由于这个jar版本的差异,Eclipse会放弃,我从来没有注意到Console中的警告消息。
解决方案是将较新版本的外部jar文件复制到引用项目的libs目录。
哇 - 这样的生产力杀手......答案 4 :(得分:0)
我今天也遇到了这个错误,因为更新到 Android SDK,r17 。 @aneal指出的链接没有讨论的是如何处理外部运行时库(例如在其自己的标题下导入的那些 - 而不是导入的用户库)。
解决此问题的最简单方法是更改构建路径中的构建顺序。只需右键单击您的项目,然后选择 Properties 。从这里,选择 Java Build Path 。在显示屏的顶部,选择标签订单并导出,然后在 Android X 上方移动 GoogleAdMobAdsSdk-4.3.1.jar (将x替换为你正在使用的版本)。接下来,清理您的项目并运行它。你应该好好去!
答案 5 :(得分:0)
我解决它的方法是:右键单击项目并选择构建路径。在显示的选项中选择配置构建路径。之后,查看库中是否存在库,然后选择订单和导出选项卡,然后选择所有jar文件。然后选择确定并运行您的项目。
答案 6 :(得分:0)
如果您正在使用Eclipse与Maven IDE(m2e),请转到“Java Build Path”,然后选择“Order and Export”,最后检查项目“Maven Dependencies”并将其下拉到列表的BOTTOM。您应该在同一工作区中对项目引用执行相同的操作。 每次我在新计算机中设置项目时都会发生。