我创建了一个简单的应用来测试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的场景。
我可以在任何地方做某事,这样我就可以在罐子里找到一个罐子。
提前致谢。
答案 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 jar和Bug 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-jar,Uber jar或Shade
注意:这与Java相关,Andoid可能表现不同,但似乎它有同样的问题。