嗨我試圖從我自己的代碼中使用外部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