[英]Classpath problems
我具有以下目錄結構(在Windows下):C:\\ JavaProjects \\ bin \\ debug \\
在JavaProjects中,我具有如下的Test.java:
package debug;
public class Test{
public void debug(String arg){
System.out.println(arg);
}
}
像這樣編譯
javac -d bin Test.java
現在在調試目錄中有Test.class。
然后,我創建另一個類(在JavaProjects中也是ConditionalCompilation.java):
import debug.*;
public class ConditionalCompilation{
public static void main(String[] args){
Test a = new Test();
a.debug("Test");
}
}
然后,在JavaProjects中,我這樣寫:
C:\JavaProjects>javac -classpath .\bin ConditionalCompilation.java
沒有錯誤發生。
現在,我嘗試一下:
C:\JavaProjects>java ConditionalCompilation
並得到這個:
Exception in thread "main" java.lang.NoClassDefFoundError: debug/Test
at ConditionalCompilation.main(ConditionalCompilation.java:5)
Caused by: java.lang.ClassNotFoundException: debug.Test
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
您能幫我了解我做錯了什么嗎?
您嘗試運行的類及其依賴項位於兩個不同的類路徑上。 Test
類植根於bin
,而ConditionalCompilation
類植根於父目錄內。
一種解決方法是顯式指定依賴項類路徑。
java -classpath bin;. ConditionalCompilation
另一個解決方法是編譯到bin
目錄並從其中運行。
javac -d .\bin -classpath .\bin ConditionalCompilation.java
cd bin
java ConditionalCompilation
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.