Java 嵌套jar中的NoClassDefFoundError(Android)
我已经创建了一个简单的应用程序来测试场景,该场景由于Java 嵌套jar中的NoClassDefFoundError(Android),java,android,eclipse,jar,noclassdeffounderror,Java,Android,Eclipse,Jar,Noclassdeffounderror,我已经创建了一个简单的应用程序来测试场景,该场景由于NoClassDefFoundError而失败 让我们举个例子,我有一个test1android项目,它的类TestClass带有一些方法。 我将这个Test1项目导出为Test1.jar,并仅导出了带有类TestClass和classpath和project文件的源文件夹 在另一个android项目Test2中,我在我的libs文件夹中添加了这个test1.jar。在这个Test2项目中,我有一个类Test2Class,它调用test1.ja
NoClassDefFoundError
而失败
让我们举个例子,我有一个test1android项目,它的类TestClass带有一些方法。
我将这个Test1项目导出为Test1.jar,并仅导出了带有类TestClass和classpath
和project
文件的源文件夹
在另一个android项目Test2中,我在我的libs文件夹中添加了这个test1.jar
。在这个Test2项目中,我有一个类Test2Class,它调用test1.jar类的方法
在此之后,我按照上述步骤将这个Test2项目导出为Test2.jar
文件
因此,当我在另一个项目中使用这个test2.jar
时,我得到了上面的错误NoClassDefFoundError
。这是jar在jar中的场景
我应该在任何地方做点什么,这样我就可以访问罐子里的罐子了
提前感谢。从java构建路径中删除JAR。将新文件夹名添加为“libs”,并发布该文件夹中的所有jar。应用程序将正常运行请尝试以下操作: 转到Project/Properties/Java Build Path/Order和Export——确保在Android依赖项和支持库前面有一个检查,如果您使用它的话
标记所有复选框,然后单击应用并清理项目。一步一步地尝试此操作:
1. <代码>删除所有库项目,然后清除。
2.转到第一个项目
Test1
右键单击属性->Android。检查是否为库
(使其成为库)。3.转到第二个项目
Test2
右键单击库部分的属性->Android,选择Add
->将第一个项目添加为库4.转到第二个项目
Test2
右键单击属性->Android。另外,请检查是否为库
5.转到第三个项目C
右键单击属性->Android。在库部分,选择添加第一个和第二个作为库。(不要将项目C设置为库)
6.现在清理所有内容并运行Proj C
编辑:
您还可以看到这个bug和。试试上面的方法,它应该会起作用。
这是做不到的。您需要解压JAR并将其添加到类路径以公开嵌套的JAR。见此参考
有几种方法可供选择,以正确的方式处理它,例如,请参阅which建议,或
注意:这与Java有关,Andoid的行为可能不同,但它似乎有相同的问题。您是否在project的构建设置中按顺序添加并导出了此项?是的,我已尝试按顺序添加并导出。以及在libs文件夹中。我想我尝试了几乎所有订单和出口的组合:P。我认为错误在于。项目文件。删除它,检查并让我知道它是否有效。因为.project文件有旧路径,即y,我也面临着同样的问题,在谷歌搜索了几次之后,我才知道这一点。第三个项目必须同时使用test1.jar
和test2.jar
作为依赖项。我仍然有NoClassDefFoundError。请交叉检查库和订单导出部分。那里面应该没有罐子。如果是,则将其移除。如果再次出现异常,请发送库的屏幕截图以及java build path.Ya的顺序和导出,正如您所说的,我将test1.jar文件放在Test2项目的libs文件夹中,并确保它没有顺序,然后导出并创建了Test2.jar。。除了这个test2.jar之外,我还把它放在了另一个新项目的libs文件夹中,并确保它不正常,然后导出?请发送日志对不起,回复太晚了。我得到test1.jar中存在的类的NoClassDefFoundError异常。因为我试图在test2.jar方法中调用test1.jar的方法。如果您想为这个bug应用补丁,您可以看到。还可以看到eclipse,就是这样。你说的不可能。一个jar或Uber-jar方法有点复杂,也没有合适的教程。不,它不能用普通的方法完成。为了验证,在谷歌上搜索“java嵌套JAR”,你会发现很多人都有同样的问题。解决方法是解压zar并添加它们,或者使用其他解决方案。