對於習慣圖形化介面操作的初學者而言,在文字模式下執行程式是一件陌生的事,也因此不瞭解 Path 路徑設定的方法與作用,而 Java 執行的平台也有自己的一套路徑規則來找尋撰寫好的 Java 類別,也就是所謂的 Classpath 設定,這個小節中將告訴您如何進行這些相關的設定。
在安裝好 JDK 程式之後,在JDK安裝目錄(假設是 C:\Program Files\Java\jdk1.6.0)下的「bin」目錄,會提供一些開發 Java 程式中必備的工具程式,對於 Java 的初學者我所給的建議是從文字模式(在 Windows 2000/XP 下稱之為命令提示字元)下來操作這些工具程式,您可以在 Windows 2000/XP 的「開始」選單中選擇「執行」,鍵入「cmd」指令來開啟文字模式。
雖然您知道 JDK 的工具程式是位於「bin」目錄下,但您的作業系統並不知道如何找到這些工具程式,所以當您鍵入「javac」嘗試執行編譯程式時,文字模式下會告訴您找不到 javac 工具程式。
圖 2.8 出現這個訊息表示找不到指定的工具程式
您必須告訴作業系統,應該到哪些目錄下嘗試找到您所想使用的工具程式,有幾個方法可以進行這項設定,最方便的方法就是設定系統變數中的 Path 環境變數,在 Windows 2000/XP 下可以選擇桌面上的「我的電腦」並按滑鼠右鍵,選擇「內容」後初換至「進階」頁面,並按下方的「環境變數」按鈕,在「環境變數」對話方塊中編輯「Path」變數。
圖 2.9 選擇 Path 變數並按下「編輯」以進行路徑設定
在 Path 變數的「編輯系統變數」的對話方塊中,於「變數值」欄位的最前方輸入 JDK「bin」目錄的路徑(這邊假設是 C:\Program Files\Java\jdk1.6.0\bin),然後緊跟著一個分號,以作為路徑設定的區隔,接著按「確定」即可完成設定。
圖 2.10 在 Path 變數中加入 JDK 的 bin 目錄路徑
之所以要將 JDK 的路徑設定放置在 Path 變數設定的最前方,是因為作業系統在搜尋 Path 路徑設定時,會從最前方開始讀取,如果在路徑下找到指定的程式,就會直接執行,當您的系統中安裝有兩個以上的 JDK 時,在 Path 路徑中設定的順序,將決定執行哪個 JDK 下的工具程式。
設定 Path 變數之後,您要重新開啟一個文字模式才能重新讀入 Path 變數內容,接著如果您執行 javac 程式,您應該可以看到圖 2.11 的畫面。
圖 2.11 設定 Path 變數成功的話,就可以找到指定的工具程式
您也可以在文字模式下執行以下的指令,以直接設定目前的環境變數包括 Path 變數(這個設定在下次重新開啟文字模式時就不再有效):
set Path= C:\Program Files\Java\jdk1.6.0\bin;%Path%
事實上,如果您沒有在 Path 變數設定 JDK 的 bin 路徑的話,也可以直接執行 java 工具程式,這是因為 Windows 下安裝 JRE 時,會將 java.exe 複製至「C:\Windows\System32\」路徑之下,而這個路徑在 Path 變數中是預設的路徑。
如果 Path 設定是尋找 JDK 安裝目錄下的「bin」目錄,則作業系統會找尋 JDK 安裝目錄下工具程式,因而當您執行 java 程式時,就會使用 JDK 所附的 JRE(即「C:\Program Files\Java\jdk1.6.0\jre」),而不是公用的 JRE(即 C:\Program Files\Java\jre1.6.0\)。
簡單的說,作業系統會嘗試在您指定的 Path 變數中尋找指定的工具程式,當您鍵入 javac 指令時,由於 Path 變數中有設定 JDK 的「bin」目錄之路徑,作業系統就可以根據這個訊息來找到 javac、java 等工具程式。
Java 執行環境本身就是一個平台,執行於這個平台上的程式是已編譯完成的 Java 程式(之後會介紹到 Java 程式編譯完成之後,會以 .class 檔案存在),如果將 Java 執行環境比喻為作業系統的話,如果設定 Path 變數是為了讓作業系統找到指定的工具程式(以 Windows 來說的話就是找到 .exe 檔案),則設定 Classpath 的目的就是為了讓Java執行環境找到指定的 Java 程式(也就是.class檔案)。
有幾個方法可以設定 Classpath,最簡單的方法是在系統變數中新增 Classpath 環境變數,在圖 2.9 中的「系統變數」按下「新增」鈕,在「變數名稱」欄位中輸入「Classpath」,在「變數值」欄位中輸入 Java 類別檔案的位置,例如可以輸入「.;C:\Program Files\Java\jdk1.6.0\ lib\tools.jar; C:\Program Files\Java\jre1.6.0\lib\rt.jar」(jar 檔是 zip 壓縮格式,當中就包括了 .class 檔案以及 jar 中的 Classpath 設定),每一筆資料中間必須以「;」作為分隔。
事實上 JDK 6 預設就會到現行工作目錄(上面的 '.' 設定),以及 JDK 的「lib」目錄(這邊假設是 C:\Program Files\Java\jdk1.6.0\lib)中尋找 Java 程式,所以如果您的 Java 程式是在這兩個目錄中,則不必設定 Classpath 變數也可以找的到,將來如果您的 Java 程式不是放置在這兩個目錄時,則可以如上設定 Classpath。
如果所使用的 JDK 工具程式具有 Classpath 指令選項,則可以在執行工具程式時一併指定 Classpath,例如:
javac -classpath classpath1;classpath2 …
其中 classpath1、classpath2 是您實際要指定的路徑;您也可以在文字模式下執行以下的指令,以直接設定目前的環境變數包括 Classpath 變數(這個設定在下次重新開啟文字模式時就不再有效):
set CLASSPATH=%CLASSPATH%;classpath1;classpath2...
總而言之,設定 Classpath 的目的,在於告訴 Java 執行環境,哪些目錄下可以找到您所要執行的 Java 程式。一個分辨 Path 與 Classpath 的方式就是:「對於 Windows 作業系統來說,Path 是讓作業系統可以找到 ".exe" 執行檔的存在,而對於 Java 執行環境來說,ClassPath 就是讓 JVM 可以找到 ".class" 執行檔的存在」。
良葛格的話匣子 在 Design Patterns Elements of Reusable Object-Oriented Software 書中對「框架」作出的解釋是:框架就是一組互相合作的類別組成,它們為特定類型的軟體開發提供了一個可以重複使用的設計。