嗨我试图从我自己的代码中使用外部Java包,并继续得到NoClassDefFoundError
,即使我使用的是我编译的类路径。NoClassDefFoundError当在编译和运行时指定相同的jar文件时抛出
为了您的娱乐我已经包括了什么,无疑将是一个愚蠢的错误在我的部分(我已经在这个约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 [ok] javac WTF.java [ok] java WTF [ok] jar cf foo.jar foo [ok]
我删除了WTF/foo目录,所以只有WTF/foo.jar可用。
javac WTF.java -cp foo.jar [ok] java WTF -cp foo.jar [[email protected]#$!]
Exception in thread "main" java.lang.NoClassDefFoundError: foo/Bar at WTF.main(WTF.java:7) Caused by: java.lang.ClassNotFoundException: foo.Bar at java.net.URLClassLoader$1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:321) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
任何线索不胜感激!
我不知道这是否编译! – adarshr 2011-02-25 12:27:47
我的错误Bar在我的测试文件中被公开标记了,但是在编写列表时我错过了它 - 除了它是编译 – norlesh 2011-02-25 12:47:55