1. 程式人生 > >JDK環境變數配置詳細解析

JDK環境變數配置詳細解析

以前只知道傻傻的跟著教程配置jdk環境變數,今天看了點資料,仔細的學習了一下,明白了為什麼這麼配置,還學了一些花裡胡哨的玩意,哈哈,總結一下。

環境變數的配置過程(以Win10為例,大同小異)

1.右鍵單擊“我的電腦”,單擊“屬性”,開啟如下介面: 這裡寫圖片描述

2.看見沒,上面的“高階系統設定”,點開它: 這裡寫圖片描述

3.點上面的“高階”,然後點下面的“環境變數”,然後彈出來: 這裡寫圖片描述

4.在下面找到Path,點選,然後“編輯”: 這裡寫圖片描述

5.下面那一行,加上一行字:;xxxx\bin; 注意,開頭和結尾各有一個分號! 其中的xxxx是你的jdk安裝目錄,例如我的jdk安裝目錄是:“C:\Program Files\Java\jdk1.8.0_60”,那麼我上面加上的一行就應該是;C:\Program Files\Java\jdk1.8.0_60\bin;

加上的一串字可以加在開頭,也可以加在結尾,當然也可以加在中間,但是夾在中間是有一些要注意的地方的,所以不推薦,推薦的是加在開頭。 6.然後一路“確定”就ok了。 7.開啟命令提示符(win+r後輸入cmd即可),輸入“javac”,如果出來下面的一大堆,就說明成功了。(如果不成功的話,請再(jin)試(zao)一(fang)遍(qi)。) 這裡寫圖片描述

為什麼要配置環境變數?

首先看看環境變數的解釋:

  環境變數(environment variables)一般是指在作業系統中用來指定作業系統執行環境的一些引數,如:臨時資料夾位置和系統資料夾位置等。   環境變數是在作業系統中一個具有特定名字的物件,它包含了一個或者多個應用程式所將使用到的資訊。例如Windows和DOS作業系統中的path環境變數,當要求系統執行一個程式而沒有告訴它程式所在的完整路徑時,系統除了在當前目錄下面尋找此程式外,還應到path中指定的路徑去找。使用者通過設定環境變數,來更好的執行程序。   (來源:百度百科)

其中有一句話很關鍵,“當要求系統執行一個程式而沒有告訴它程式所在的完整路徑時,系統除了在當前目錄下面尋找此程式外,還應到path中指定的路徑去找。

我們先撇開這些不談,我們沒有配置環境變數的時候想要執行javac命令應該怎麼辦呢? 開啟cmd直接輸入javac?顯然不可以: 這裡寫圖片描述

顯示的是“javac不是內部或外部命令,也不是可執行的程式或批處理檔案。”,這跟你瞎打一行亂七八糟的東西是一樣的,對windows來說是一樣的,它都看不懂。我們要向執行javac,必須找到這個可執行檔案的位置,然後系統就會在那裡找到javac程式,才能夠執行。 也就是先cd c:\Program Files\Java\jdk1.8.0_60\bin

,進入javac所在的目錄,再javac命令,這樣才可以執行: 這裡寫圖片描述

所以,以後每次編譯java程式的時候,都要進入這個目錄或者打上這個目錄的地址,系統才會到這個地方找到javac程式,才會執行。 這多麻煩啊! 再想想為什麼有的命令可以,有的命令不可以呢?是因為cmd會在當前目錄下找有沒有符合的命令(可執行檔案),如果找不到的話?這個就回到開頭對環境變數的解釋了,“當要求系統執行一個程式而沒有告訴它程式所在的完整路徑時,系統除了在當前目錄下面尋找此程式外,還應到path中指定的路徑去找”,所以如果當前目錄下找不到,系統就會在環境變數path中列舉的目錄依次去找。如果在這些目錄中找到了就會執行,找不到才是會顯示找不到。 所以我們把javac所在的目錄也列入環境變數path中,這樣的話,在計算機的任意位置執行javac是都可以的了。

還有沒有什麼問題?

這樣把環境變數配置了,可以一勞永逸的使用那些命令了。但是還是會產生一些問題:我們如果想把jdk換一個地方儲存,或者是把jdk改個名字,再或者版本升級新版的把舊的替換掉,所有這些會導致javac所在目錄路徑發生變化的事情,都會導致原有的環境變數配置都需要做出新的調整。這個時候有沒有發現path很長,windows預設的視窗根本盛不下,每次新增修改的時候都得小心翼翼?而且我們發現,比如上面新增的;C:\Program Files\Java\jdk1.8.0_60\bin;,這些內容再怎麼變化,也是中間的目錄C:\Program Files\Java\jdk1.8.0_60發生變化,其他的是不會變化的。 所以就有了這個辦法:我們規定一個東西,比如“AAA”吧,它就等於“C:\Program Files\Java\jdk1.8.0_60”,那麼,原來的環境變數不就變成了;AAA\bin;了嗎,這樣我們每次修改的時候,只大膽的修改AAA就可以了,path裡面新增的那些東西,就不用再如履薄冰地動它了。 但是,上面的只是我們的設想,在windows下,自有一套這樣的做法,我們新建一個環境變數,也就是上面的AAA,我們通常起名為“JAVA_HOME”,然後把它的值設為C:\Program Files\Java\jdk1.8.0_60,然後在path裡面新增“;%JAVA_HOME%\bin;”,這兩個百分號括起來的東西,就是動態獲取環境變數的值,會讓系統自己去找它所指代的東西。這樣,每次有變化的話就只修改JAVA_HOME裡的值就可以了。 甚至可以想的再極限一點,在path裡的那一大長串,我們的java環境變數放在前面,後面,還是中間呢?當然是前面更好一些,因為系統是從前往後找的,所以放在前面,會更快。(至於快多少,哈哈哈哈^_^)

花裡胡哨:怎麼配置個臨時環境變數?

有些情況下,如果我們希望配置一些環境變數,但是我們只是希望它能暫時的起作用,等會這個環境變數消失或者恢復原樣就可以了。也就是我們希望配置一個臨時的環境變數,這個時候怎麼辦呢? 這個時候我們需要用到一個命令“set”,我們在命令提示符視窗下輸入set,會顯示出所有的環境變數: 這裡寫圖片描述

而我們在set後面加上具體的環境變數,就會顯示某個環境變數的具體數值,例如:set path這裡寫圖片描述

如果再在後面加上=XXX,例如:set path=test,這樣就會把該環境變數改變為某個值,再用set path檢視一下: 這裡寫圖片描述

我們可以看到,path的值已經發生了變化,但是這個時候我們再開啟一個新的命令提示符視窗,輸入set path檢視path環境變數的值,發現還是原來的值: 這裡寫圖片描述

所以利用這個思路,我們可以臨時配置一個環境變數。 就是在命令提示符視窗中,輸入set path=C:\Program Files\Java\jdk1.8.0_60\bin,就可以了,這樣再使用javac是可以的。 但是這樣還是有一個問題:path的值現在只有這一個了,其他的一些命令可能又沒法使用了,所以我們還得改進方法,做到在path原來的基礎上,新增新的值,而且不破壞舊的。 還記得之前說的兩個百分號括起來的東西嗎,動態獲取環境變數值,我們可以利用它來做點事情,比如上面我們已經將環境變數設為javac的目錄了,我們想再加上一個值,比如加上“have_a_try”,我們輸入“set path=have_a_try;%path%”就可以了。 這裡寫圖片描述

我們可以看到,path的值已經按照我們的意願發生變化了,而且這個path是個臨時的值,關掉以後就會影響恢復了。

[END]

也沒有什麼很難的地方,就是有一些以前從來沒想過的東西,現在知道了為什麼,怎麼做。哈哈哈哈^_^

如有紕漏,望不吝指出,不勝感激。