嵌套jar中的NoClassDefFoundError(Android)

时间:2014-11-27 11:22:50

标签: java android eclipse jar noclassdeffounderror

我创建了一个简单的应用来测试NoClassDefFoundError失败的场景。

让我们举个例子,我有一些带有类TestClass的Test1 android项目。 这个Test1项目我作为test1.jar导出,只导出了包含Class TestClass和classpath和。project文件的源文件夹。

在另一个Android项目Test2中,我在我的libs文件夹中添加了这个test1.jar。在这个Test2项目中,我有一个类Test2Class,它调用test1.jar类的方法。

在此之后,我按照上述步骤将此Test2项目导出为test2.jar文件。

因此,当我在另一个项目中使用此test2.jar时,我得到以上错误NoClassDefFoundError。这是jar里面jar的场景。

我可以在任何地方做某事,这样我就可以在罐子里找到一个罐子。

提前致谢。

4 个答案:

答案 0 :(得分:3)

逐步尝试:
1. Remove all library项目然后清理。
2.转到第一个项目Test1右键单击属性 - > Android系统。检查Is Library(制作图书馆) 3.转到第二个项目Test2右键单击属性 - > Android库中的Android选择Add - >将第一个项目添加为库。
4.转到第二个项目Test2右键单击属性 - > Android系统。另外,请检查Is Library
5.转到第三个project C右键单击属性 - > Android系统。在“图书馆”部分,选择Add - >将第一个和第二个添加为库。 (不要将Proj C作为库)
6.现在清理所有内容并运行Proj C 编辑: 您还可以看到此错误Bug 405212 - Do not pack jars bundled inside a packed jarBug 361628 - Nested jars cannot be unpacked with Java 1.7。尝试以上方式它应该工作。

答案 1 :(得分:0)

从java构建路径中删除jar。将新文件夹名称添加为“libs”并将所有jar文件发布到该文件夹​​中。应用程序运行正常

答案 2 :(得分:0)

试试这个:

转到项目/属性/ Java构建路径/订单和导出 - 如果您使用它,请确保在Android Dependencies和支持库前面进行检查。

标记所有复选框,然后单击“应用”并清除项目。

答案 3 :(得分:0)

无法完成。您需要解压缩JAR并将它们添加到类路径以公开嵌套的JAR。请参阅此Java bug以供参考。

有几种方法可以正确处理它,例如,请参阅this question,其中建议使用One-jarUber jarShade

注意:这与Java相关,Andoid可能表现不同,但似乎它有同样的问题。