Windows環境變數Path、ClassPath、JAVA_HOME的作用
系統變數 JAVA_HOME的作用
系統變數 PATH 的作用
系統變數 CLASSPATH 的作用
總結
程式猿學習一門程式語言首先要做什麼?答案當然是搭建這門語言的開發環境了,沒有語言的開發環境怎麼學習程式設計。但是每一個新手幾乎都是按照書籍或者部落格上的教程搭建的開發環境,這就導致很多人始終不知道Window系統中的 Path 和 ClassPath 到底是幹什麼的,為啥要在Windows環境變數中配置它們,這篇博文將帶你瞭解它們。
我們以最熱門的程式語言Java 為例,其他程式語言都是一樣的道理。Windows下 Java 用到的環境變數主要有3個,分別為 Path、ClassPath、JAVA_HOME。
首先很多人都會有個疑惑:有些部落格使用的是PATH、CLASSPATH和JAVA_HOME,但是有些部落格又是 path、classpath 和 java_home ,搞得新手是一頭霧水,還沒學習程式設計已經就懵了。其實這是因為Windows作業系統不區分大小寫,設定Path和PATH並沒有區別;而Linux作業系統是區分大小寫的,設定Path和PATH是有區別的,因此只需要設定PATH環境變數即可。
系統變數 JAVA_HOME的作用
很多教程配置JDK環境變數的時候,都會讓你新建一個系統變數 JAVA_HOME, 然後將這個系統變數的值指向JDK的安裝目錄,如下圖這樣:

這樣做的好處:
一是為了方便引用
比如,你的JDK安裝在下面的目錄裡,並且將這個目錄路徑設為你的 JAVA_HOME 值:
C:\Program Files\Java\jdk1.8.0_91
為了避免你每次引用 JDK的安裝目錄 都要輸入很長的路徑串,你只需輸入下面這行語句即可:
%JAVA_HOME%
二則是歸一原則
當你JDK路徑被迫改變的時候(比如JDK需要升級了), 你僅需更改 JAVA_HOME 的變數值即可, 否則你就要更改任何引用JDK目錄絕對路徑的地方, 萬一你要是沒有改全, 某個程式找不到JDK, 後果是可想而知的。
系統變數 PATH 的作用
當你在計算機安裝JDK之後,輸入“javac”或者“java”之類的命令是不能馬上被計算機正確執行的,因為計算機不知道到哪裡去找這兩個命令。
那麼計算機該如何查詢你輸入的命令呢? Windows作業系統是根據 環境變數PATH 來查詢命令的。環境變數PATH 的值是一系列路徑,Windows作業系統將在這一系列的路徑中依次查詢命令,如果能找到這個命令,則該命令是可執行的;否則將出現“‘XXX’不是內部命令或外部命令,也不是可執行的程式或批處理檔案”的提示。
對於Windows系統而言,一般情況下 系統變數Path 已經存在,你可以直接點選 編輯 修改該環境變數,如果沒有的話你就新建一個名為PATH的環境變數,在該環境變數值後面追加如:
%JAVA_HOME%\bin;
或者這樣:
C:\Program Files\Java\jdk1.8.0_91\bin;
這兩種都是正確的,但是為了以後修改維護方便還是建議使用:%JAVA_HOME%\bin;
系統變數 CLASSPATH 的作用
它的作用是指定類搜尋路徑,要使用已經編寫好的類,JVM就是通過CLASSPATH來尋找 Java類的。
實際上,如果你安裝的是1.5版本以上的JDK,完全是可以不用設定 環境變數CLASSPATH的。
CLASSPATH 環境變數的作用是什麼呢?在1.4版本以前的JDK,當使用“java 類名”命令來執行Java程式時,計算機需要根據 CLASSPATH 來搜尋Java類。
1.4以前的版本,常常需要設定CLASSPATH環境變數的值為:
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;
首先要注意的是最前面的”.;”,注意是點分號。這個是告訴JDK,搜尋 Class 時先查詢當前目錄的CLASS檔案,之所以這樣搞是由於Linux的安全機制引起的,Linux 使用者很明白,Windows 使用者就很難理解(因為 Windows 預設的搜尋順序是先搜尋當前目錄的,再搜尋系統目錄的,再搜尋 PATH 環境變數設定的) ,所以如果喜歡盤根究底的朋友不妨研究一下 Linux。
後來的 JRE 會自動搜尋當前路徑下的類檔案,自動載入 dt.jar 和 tools.jar 檔案中的 Java類,不再需要設定環境變數CLASSPATH。一旦你設定了這個環境變數, JRE 將只按照環境變數的設定來搜尋Java類,所以環境變數一定要設定正確。
總結:
JAVA_HOME是為了給你方便用的;
PATH 是給作業系統(OS)用的 ;
CLASSPATH 是給Java(JVM)用的;
大家喜歡可以多多關注,你的關注是我最大的動力。
可以關注我的微信公眾號:首席資料師 裡面有很多關於大資料的乾貨