1. 程式人生 > >安裝JDK時設定Path 和 Classpath

安裝JDK時設定Path 和 Classpath

一、設定Path

  在安裝好JDK程式後,在JDK安裝目錄下的bin目錄中,會提供一些開發Java程式時必備的工具程式。對於Java的初學者,建議從命令符模式(cmd模式)來操作這些工具程式。可以通過”Win+R“,再輸入“cmd”命令來開啟命令符模式。

  雖然你知道JDK的工具程式位於bin目錄下,但作業系統並不知道如何找到這些工具程式。所以當輸入“javac”嘗試執行編譯程式時,命令符模式下會告訴你找不到javac工具程式。(會提示:‘javac’不是內部或外部命令,也不是可執行的程式或批處理檔案)。

必須告訴作業系統,應該到哪些目錄下嘗試找到你所想使用的工具程式。有幾個方法可以進行這項設定,最簡便的方法就是設定系統變數中的Path的環境變數。在"我的電腦"圖示上選擇並單擊右鍵選擇“屬性”後切換到“高階”頁面,並單擊下方的“環境變數”按鈕,在“環境變數”對話方塊中編輯Path變數。在Path變數的“編輯系統變數”對話方塊中,在“變數值”文字框的最前方輸入JDK bin目錄的路徑,然後緊跟著一個分號,以作為分隔,單擊“確定”按鈕即可完成設定。(在Win10系統中有一點點不同,此時是將JDK bin的目錄的路徑像一個條目一樣加在已有路徑的下方,路徑可以上下移動)

之所以要將JDK的路徑設定放置在Path變數設定的最前方,是因為作業系統在搜尋Path路徑設定時,會從最前方開始讀取,如果在路徑下找到指定程式,就會直接執行。當你的系統中安裝在兩個以上的JDK時,在Path路徑中的設定順序,將決定執行哪個JDK下的工具程式。

設定Path變數之後,要重新開啟一個命令模式才能重新讀入Path變數內容,接著如果執行javac程式,應該可以看到與之前不同的畫面。(這個是成功的畫面)

如果Path設定是尋找JDK安裝目錄下的bin目錄,則作業系統會搜尋JDK安裝目錄下的工具程式。這樣當執行java程式時,就會使用JDK附帶的JRE,而不是公用的JRE。這兩個JRE的安裝路徑並不相同。

   簡單地說,作業系統會嘗試在指定的Path變數中尋找指定的工具程式。當輸入javac命令時,由於Path變數中有設定JDK的bin目錄的路徑,作業系統就可以根據這個資訊來找到javac工具程式。

二、設定Classpath

Java執行環境本身就是一個平臺,執行這個平臺上的程式是已編譯完成 的Java程式(Java程式編譯完成之後,會以.class檔案存在)。如果將Java執行環境比喻為作業系統,如果設定Path變數是為了讓作業系統找到指定的工具程式(以Windows來說就是找到了.exe檔案),則設定Classpath的目的就是讓Java執行環境找到指定的Java程式(也就是.class檔案)。

有幾個方法可以設定Classpath,最簡單的方法是在系統變數中新增Classpath環境變數。在“系統變數”下單擊“新建”按鈕,在“變數名”文字框中輸入Classpath,在“變數值”文字框中輸入Java類檔案的位置。例如可以輸入.;E:\Java9\lib\tools.jar;E:\Java9\lib\rt.jar(jar檔案是zip壓縮格式,其中包括.class檔案和jar中的Classpath設定),每一路徑中間必須以“;”作為分隔。第一個用“.;”作為分隔。

    事實上JDK預設就會到當前工作目錄(上面的“."設定),以及JDK的lib目錄中尋找Java程式。所以如果Java程式是在這兩個目錄中,則不必設定Classpath變數也可以找得到,將來如果Java程式不是放置在這兩個目錄中,則可以按上述方法設定Classpath。《Java學習筆記——林信良 編著  P22》

今天我要安裝最新的JDK9時,在lib中並沒有發現tools.jar和rt.jar,然後我就沒有設定第二步,在後來的程式中也可以正常執行。我猜測在JDK9中已經將Classpath這一步包含在了第一步,以節省配置過程的複雜程度。

總而言之,設定Classpath的目的在於告訴Java執行環境,在哪些目錄下可以找到你所要執行的Java程式。一個分辨Path與Classpath的方式就是:“對於Windows”作業系統來說,path是讓作業系統可以找到.exe執行程式的存在,而對於Java執行環境來說,Classpath就是讓JVM可以找到.class執行程式 的存在“

寫一個Java程式來測試是否配置成功:

在編寫程式之前首先要確定可以看得到檔案的副檔名。(相關配置不再介紹)

接著選擇一個目錄來編寫Java原始碼檔案。假設該檔案儲存在E:\workspace目錄,你要新建一個”文字檔案“(也就是.txt檔案),並重新命名為HelloJava.java。由於是將檔案檔案的副檔名從.txt改為.java,所以系統會詢問你是否更改副檔名,應確定更改,接著以文字方式開啟HelloJava.java檔案並寫入以下程式:

public class HelloJava{

public static void mian(string[] args) {

System.out.println("Hello,My first program!");

}

}

接著使用命令符模式下進入 E:\workspace目錄下使用javac工具程式來編譯.java檔案,這裡指定編譯HelloJava.java命令如下:

E:\workspace\javac HelloJava.java

如果編譯順利通過,則在HelloJava.java所在目錄,會出現一個HelloJava.class檔案,這是已經編譯完成的Java位元組碼(Bytecodes)檔案程式。

在順利編譯出.class的檔案之後,可以使用java工具程式來執行它。執行時必須指定類名稱,就以上的例子來說,也就是指定HelloJava.class這個檔案的主檔名。命令執行方式如下:

E:\workspace>java HelloJava

java工具程式會根據你指定的類名稱,實際載入.class的檔案。以上來說,就是載入HelloJava.class並執行,執行的結果應該是打印出:Hello,My first program!

祥見《Java筆記——林信良 編著》P20~P26