類路徑是全部包含類文件的路徑的集合。
類路徑中的目錄和歸檔文件是搜尋類的起始點。java
虛擬機搜尋類測試
Person.java 源文件this
public class Person { private String name; public Person(String name) { this.name = name; } public void PrintName() { System.out.println("Name is:" + name); } }
Welcome.java 源文件spa
/** * This program dispalys Hello World * @version 1.0 * @author ABeen * */ public class Welcome { public static void main(String[] args) { String greeting = "Hello World!"; System.out.println(greeting); String name = "ABeen"; Person e = new Person(name); e.PrintName(); } }
測試執行
在源碼所在目錄執行code
mac-abeen:java abeen$ javac Welcome.java 編譯正常 mac-abeen:java abeen$ java Welcome 執行正常 Hello World! Name is:ABeen mac-abeen:java abeen$
在非源碼目錄執行源碼
編譯代碼虛擬機
//未設置類路徑,編譯時找不到引用的源文件 mac-abeen:alearn abeen$ javac ./java/Welcome.java ./java/Welcome.java:16: 錯誤: 找不到符號 Person e = new Person(name); ^ 符號: 類 Person 位置: 類 Welcome ./java/Welcome.java:16: 錯誤: 找不到符號 Person e = new Person(name); ^ 符號: 類 Person 位置: 類 Welcome 2 個錯誤 //設置類路徑 mac-abeen:alearn abeen$ javac -cp ./java ./java/Welcome.java
執行代碼io
//未設置類路徑 mac-abeen:alearn abeen$ java ./java/Welcome 錯誤: 找不到或沒法加載主類 ..java.Welcome 緣由: java.lang.ClassNotFoundException: //java/Welcome //設置類路徑 mac-abeen:alearn abeen$ java --class-path=/Users/abeen/abeen/alearn/java Welcome Hello World! Name is:ABeen