如果您的類別檔案是放置在 C:\workspace,而您打算在 C:\下執行這個檔案,則以下的執行方式是無效的。
Java 程式是執行於 Java 虛擬機器,也就是 JVM 之上,JVM對於 Java 程式而言,就是一台虛擬的電腦設備,在第二章節討論 Path 變數的設定時,您知道要讓作業系統找到您所指定的程式,則必須在 Path 變數中告知程式所在的路徑,對於 Java 程式而言,JVM 就相當於是它的作業系統,為了讓 JVM 找到您所指定的 Java 程式,您要告訴 Java 程式的所在,您要提供(設定)Classpath 變數。
簡單的說, Path 變數之於作業系統的作用 ,就相當於Classpath 變數對於 JVM 的作用。
在這個小節中,您將會學習到:
如果您的類別檔案是放置在 C:\workspace,而您打算在 C:\ 下執行這個檔案,您可以使用-classpath 選項來提供類別所在的路徑,例如:
您使用-classpath 選項告訴 JVM,可以在 C:\workspace 找到 HelloWorld 類別,然而您有疑問,為什麼在 C:\workspace 下執行 java 工具程式時,不必使用-classpath 選項呢?因為預設上 Classpath 就是當前的工作路徑,無需額外設定。
事實上 javac 工具程式也有-classpath 選項可以使用,當您的程式中使用到某個類別,在編譯時若該類別不是在當前的工作路徑下,則您必須使用-classpath 選項提供該類別的所在路徑。
在使用 javac 工具程式時,還有一個-sourcepath 選項,這個選項的作用與-classpath 選項類似,只不過-classpath 所指定的是已經編譯完成的類別檔案(也就是*.class)之路徑所在,而-sourcepath 所指定是尚未編譯完成的類別原始碼程式(也就是*.java)之所在。
編譯器在編譯原始碼時,如果遇到所指定的類別,會先搜尋 sourcepath 路徑下是否有指定的類別,然後搜尋 classpath 路徑下是否有指定的類別,可以使用-verbose 選項來看到這個過程(參考圖 3-12),預設上 sourcepath 與 classpath 的設定是相同的。
與設定 Path 環境變數時類似,您也可以在當前開啟的文字模式視窗下設定 Classpath 變數,例如:
在設定 Classpath 時包括了當前路徑,也就是使用 . 設定,每個設定以分號區隔,設定好 Classpath 環境變數之後,可以不再使用-classpath 選項,java 工具程式會讀取 Classpath 環境變數中的路徑設定。
如果您已經設定了 Classpath 環境變數,而執行時又使用-classpath 選項提供路徑的話,那麼-classpath 選項所提供的路徑會覆蓋 Classpath 環境變數的設定,而不會有加成的作用,例如若故意如圖 3-18 執行,則無法順利執行程式。
您也可以在系統變數中直接新增 Classpath 變數,如此每次開啟文字模式視窗時,就會自動套用變數內容,您可以先按照第二章節中,設定 Path 系統變數的操作步驟中,先操作至開啟「環境變數」對話框,在該對話框中按「系統變數」中的「新增」,並如圖 3-19 新增 Classpath 系統變數:
建議您在設定 Classpath 系統變數時,保留當前工作路徑為Classpath 的設定之一。
自我測驗
說明 Path 與 Classpath 的設定目的之相同點與不同點。
下列參考資料能夠對本章節所討論的話題提供 更詳細的說明: