簡體   English   中英

類路徑問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM