我正在验证由几个独立模块组成的程序的安装。它们不是相互依赖的。我有apple.jar和orange.jar,它们放在同一个文件夹中,是在同一个项目中开发的,但它们彼此独立运行。
运行apple.jar很好,但是orange.jar给了我一个指向apple.jar的NoClassDefFoundError。
/usr/java/jre1.6.0_14/bin/java -jar validator.jar
线程“主”java.security.AccessController.doPrivileged(Native中的异常: java.lang.NoClassDefFoundError: orange/client/Apple : java.lang.ClassNotFoundException: orange.client.Apple at java.net.URLClassLoader$1.运行(未知源)在java.net.URLClassLoader.findClass(未知源)在java.lang.ClassLoader.loadClass(未知源)在sun.misc.Launcher$AppClassLoader.loadClass(Unknown来源)在java.lang.ClassLoader.loadClassInternal(Unknown源代码的java.lang.ClassLoader.loadClass(未知源)中,找不到主类:验证器/客户端/StormDataXMLGenerator。程序将退出。
清单文件将Orange列为正确的主类。
Main-等级:橙色/客户/橙色
有人知道它为什么要给我NoClassDefFoundError吗?提前感谢!
发布于 2010-05-07 07:49:07
也许orange.client.Orange依赖于orange.client.Apple?看起来您的主类已经加载了,所以我想其他类正在尝试引入orange.client.Apple
。
或者爪哇少了一个香蕉:-)
发布于 2010-05-07 07:49:14
我不确定这是否是你问题的原因,但你说你在哪里
Main-等级:橙色/客户/橙色
我觉得应该是
Main-Class: orange.client.Orange
至少我看到的所有例子都是这样做的。
发布于 2010-05-07 07:48:59
看起来,尽管您尽了最大的努力,orange.jar和apple.jar中的代码之间还是出现了一些相互依赖关系。如果您可以访问源代码,请查看orange.jar中所有类的orange.jar语句,看看它们是否引用了apple.jar中的任何内容。
https://stackoverflow.com/questions/2789827
复制