3-4 設定 Classpath 環境變數

如果您的類別檔案是放置在 C:\workspace,而您打算在 C:\下執行這個檔案,則以下的執行方式是無效的。

圖3-15、直接指定類別檔案的路徑是無效的

Java 程式是執行於 Java 虛擬機器,也就是 JVM 之上,JVM對於 Java 程式而言,就是一台虛擬的電腦設備,在第二章節討論 Path 變數的設定時,您知道要讓作業系統找到您所指定的程式,則必須在 Path 變數中告知程式所在的路徑,對於 Java 程式而言,JVM 就相當於是它的作業系統,為了讓 JVM 找到您所指定的 Java 程式,您要告訴 Java 程式的所在,您要提供(設定)Classpath 變數。

簡單的說, Path 變數之於作業系統的作用 ,就相當於Classpath 變數對於 JVM 的作用。

在這個小節中,您將會學習到:

  • -classpath 與-sourcepath 選項的作用
  • 如何設定 Classpath 環境變數
  • 如何在系統變數中加入 Classpath 變數

• 如何使用-classpath 選項

如果您的類別檔案是放置在 C:\workspace,而您打算在 C:\ 下執行這個檔案,您可以使用-classpath 選項來提供類別所在的路徑,例如:

圖3-16、使用-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 的設定是相同的。

• 如何設定 Classpath 環境變數

與設定 Path 環境變數時類似,您也可以在當前開啟的文字模式視窗下設定 Classpath 變數,例如:

圖3-17、設定 Classpath 環境變數

在設定 Classpath 時包括了當前路徑,也就是使用 . 設定,每個設定以分號區隔,設定好 Classpath 環境變數之後,可以不再使用-classpath 選項,java 工具程式會讀取 Classpath 環境變數中的路徑設定。

如果您已經設定了 Classpath 環境變數,而執行時又使用-classpath 選項提供路徑的話,那麼-classpath 選項所提供的路徑會覆蓋 Classpath 環境變數的設定,而不會有加成的作用,例如若故意如圖 3-18 執行,則無法順利執行程式。

圖3-18、以-classpath 選項提供的路徑為主

• 如何在系統變數中加入 Classpath 變數

您也可以在系統變數中直接新增 Classpath 變數,如此每次開啟文字模式視窗時,就會自動套用變數內容,您可以先按照第二章節中,設定 Path 系統變數的操作步驟中,先操作至開啟「環境變數」對話框,在該對話框中按「系統變數」中的「新增」,並如圖 3-19 新增 Classpath 系統變數:

圖3-19、新增 Classpath 系統變數

建議您在設定 Classpath 系統變數時,保留當前工作路徑為Classpath 的設定之一。

自我測驗

說明 Path 與 Classpath 的設定目的之相同點與不同點。

相關資料

下列參考資料能夠對本章節所討論的話題提供 更詳細的說明: