在 JavaGossipLabs / Labs / CLASSPATH-javac / 中有個 classes 目錄,請複製到C:\workspace中,確認C:\workspace\classes中有個已編譯好Console.class,你可以在C:\workspace中開個Main.java,如下使用Console
類別:
public class Main {
public static void main(String[] args) {
Console.writeLine("Hello World");
}
}
如果你如下編譯,將會出現錯誤訊息:
編譯器在抱怨,它找不到Console
類別在哪裡(cannot find symbol),事實上,在使用javac
編譯器時,如果要使用到其它類別程式庫時,也必須指定CLASSPATH
,告訴javac
編譯器到哪邊尋找.class檔案。例如:
這一次編譯成功了,但無法執行,原因是執行時找不到Console
類別,因為你執行時忘了跟JVM指定CLASSPATH
,所以JVM找不到Console
類別。如果如下執行就可以了:
別忘了,如果執行JVM時指定了CLASSPATH
,就只會在指定的CLASSPATH
中尋找使用到的類別,所以上圖指定CLASSPATH
時,是指定「.;classes」,注意一開始的「.」,這表示目前資料夾,這樣才可以找到目前資料夾下的Main.class,以及classes下的Console.class。
javac
等工具程式,大多也是Java撰寫的,執行於JVM之上,這也就是為何,javac
需要相關.class檔案路徑資訊時,也是用CLASSPATH
指定的原因,雞生蛋?蛋生雞? 有進一步探討。