【发布时间】:2011-02-25 12:19:31
【问题描述】:
您好,我正在尝试使用我自己的代码中的外部 Java 包并不断收到 NoClassDefFoundError,即使我使用的类路径与我编译时使用的相同。
为了你的乐趣,我已经包含了一个毫无疑问是我的愚蠢错误的简单再现(到目前为止,我已经做了大约 6 个小时)
/* WTF/WTF.java */
import foo.Bar;
class WTF
{
public static void main(String[] args)
{
Bar dontCare = new Bar();
}
}
/* WTF/foo/Bar.java */
package foo;
class Bar
{
public Bar() {}
}
现在我从 WTF 目录运行以下命令:
javac foo/Bar.java [好的] javac WTF.java [好的] java WTF [好的] jar cf foo.jar foo [ok]我删除了 WTF/foo 目录,所以只有 WTF/foo.jar 可用。
javac WTF.java -cp foo.jar [ok] java WTF -cp foo.jar [$!@#$!] 线程“main”中的异常 java.lang.NoClassDefFoundError: foo/Bar 在 WTF.main(WTF.java:7) 引起:java.lang.ClassNotFoundException: foo.Bar 在 java.net.URLClassLoader$1.run(URLClassLoader.java:217) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:205) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:321) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:266)非常感谢任何线索!
【问题讨论】:
-
我想知道这是否甚至编译!
-
我的错误 Bar 在我的测试文件中被标记为公开,但我在编写清单时错过了它 - 除了是的,它确实可以编译