PATH 是什麼?


如果你寫了第一個HelloWorld.java:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello!World!");
    }
}

這個.java放在C:\workspace中,然後你如下切換至C:\workspace,並執行javac指令:

喔喔!執行失敗...


失敗了?為什麼?這是(Windows)作業系統在跟你抱怨,它找不到javac放在哪邊!當要執行一個工具程式,那個指令放在哪,系統預設是不曉得的,除非你跟系統說工具程式存放的位置。例如:

指定工具程式位置


javac編譯成功後會靜稍稍地結束,所以沒看到訊息就是好消息,但是這樣下指令實在太麻煩了。,而且你會有疑問:之前安裝JDK最後示範執行java指令時,為什麼不用指定位置?

當你鍵入一個指令而沒有指定路徑資訊時,作業系統會依照PATH環境變數中設定的路徑順序,依序尋找各路徑下是否有這個指令。可以執行echo %PATH%來看看目前系統PATH環境變數中包括哪些路徑資訊:

察看PATH資訊

依上圖的PATH資訊,如果你鍵入java指令,系統會從第一個路徑開始找有無java(.exe)工具程式,如果沒有再找下一個路徑有無java(.exe)工具程式...找到的話就執行。若你查看C:\Windows\system32,會發現當中確實有 java(.exe),這是因為安裝JDK(JRE)時,Windows的JDK(JRE)安裝程式會自動放一份java(.exe)到C:\Windows\system32,這就是為何之前安裝JDK(JRE)後,就可以直接執行java指令的原因。

然而依上圖的PATH資訊,如果鍵入javac指令,系統找完PATH中所有路徑後,都不會找到javac (.exe)工具程式,當所有路徑都找不到指定的工具程式時,就會出現剛剛第一張圖的錯誤訊息。

你要在PATH中設定工具程式的路徑資訊,系統才可以在PATH中找到你要執行的指令。Windows如果要設定PATH,可以使用SET指令來設定,設定方式為SET PATH=路徑。例如:

設定PATH環境變數


設定時若有多個路徑,會使用分號(;)作區隔,通常會將原有PATH附加在設定值後面,如此尋找其它指令時,才可以利用原有的PATH資訊。設定完成之後,就可以執行javac而不用額外指定路徑。

建議將JDK的bin路徑放在Path變數的最前方,是因為系統搜尋Path路徑時,會從最前方開始,如果路徑下找到指定的工具程式就會直接執行,若系統中安裝兩個以上JDK時,Path路徑中設定的順序,將決定執行哪個JDK下的工具程式,在安裝了多個JDK或JRE的電腦中,確定執行了哪個版本的JDK或JRE非常重要,確定PATH資訊是一定要作的動作