天天看點

關于Java的path,classpath,java_home環境變量的配置與具體含義

标出了原連結:http://blog.sina.com.cn/s/blog_7781d4ed01019d7m.html

對于一個Java初學者來說,第一步要做的是安裝jdk并配置環境變量,一般按照書上或者網上的步驟,一步步照着做就行了,但是對于初學者來說,很多問題沒有解決,比如為什麼很多配置方法各不相同,卻都能夠配置成功?而且很少有人能夠解釋清楚path,classpath,java_home的含義是什麼。

我剛學Java的時候也是一頭霧水,随着學習的深入,逐漸了解了這些變量的含義,在此,把我的一些想法和收獲與大家分享。

首先,我們先來看一下通過cmd對Java檔案的執行步驟。我之前在E盤Java檔案夾下儲存了HelloWorld.java檔案,下面使用這個檔案進行示範。

首先跳轉到Java檔案夾目錄下

關于Java的path,classpath,java_home環境變量的配置與具體含義

然後使用javac指令對HelloWorld.java檔案進行編譯,此時目前目錄下會自動生成一個HelloWorld.class檔案

關于Java的path,classpath,java_home環境變量的配置與具體含義

這一指令的含義是作業系統調用一個名為javac.exe的應用程式對HelloWorld.java檔案進行處理,處理結果儲存在一個名為HelloWorld.class檔案的檔案中。

然後我們使用java指令對HelloWorld.class檔案進行執行,螢幕上顯示出“Hello World!”,表示執行成功。

關于Java的path,classpath,java_home環境變量的配置與具體含義

這一指令的含義是作業系統調用一個名為java.exe的應用程式對HelloWorld.class檔案進行處理(檔案的字尾.class應省略掉)。執行結果出現在螢幕上。

現在我們有一個疑問,系統是如何找到并調用javac.exe和java.exe兩個應用程式的?打個比方,平時我們運作某一程式,比如魔獸,酷狗音樂,都是先找到它們的應用程式war3.exe和kugou.exe的所在位置,然後輕按兩下運作。那麼作業系統是如何自動找到javac.exe和java.exe的位置呢?這就是path環境變量的作用。

path變量的值一般是一連串的目錄,當初作業系統需要調用某一應用程式時,會預設的根據path變量的值,在各目錄中依次搜尋該應用程式,直到找到為止,否則傳回錯誤提示。

本例中系統會根據path變量的值,依次在各個目錄下查找javac.exe和java.exe兩個應用程式,是以我們要将javac.exe和java.exe的所在目錄添加到path環境變量的值中。如圖所示,jdk的各個應用程式一般都在安裝檔案目錄下的bin檔案夾中,是以我們就應該在path中添加“C:\Program Files\Java\jdk1.6.0_22\bin”這個目錄。注意,目錄之間用分号“;”隔開;目錄位置是在前還是在後沒影響,反正系統是要依次查找的。

關于Java的path,classpath,java_home環境變量的配置與具體含義

下面我們來讨論classpath環境變量的作用。它的值也是由目錄組成,它的作用在于告訴Java執行環境,在哪些目錄下可以找到所要執行的Java程式所需要的類或者包。比如我要運作一個名為Test.class的檔案,而這個程式調用了另一個Link.class檔案的内容,那麼系統必須知道Link.class檔案的位置才能調用Link.class檔案。如果Link.class檔案的目錄在classpath環境變量的值中,就可以找到了。

事實上,從jdk5.0開始,會預設在目前目錄和jdk的lib目錄中(C:\Program Files\Java\jdk1.6.0_22\lib)查找,如果所需的.class檔案都在上述兩個目錄中,則classpath的值隻需設定為“.;”,這個點表示目前目錄。否則要根據情況添加classpath的值。

至于java_home環境變量,可有可無。java_home一般設定為jdk的安裝目錄,比如C:\Program Files\Java\jdk1.6.0_22。如果設定了java_home,那麼path環境變量可以配置為“%java_home%\bin”,可以看出java_home的作用是使得其他相關環境變量的配置更加友善簡潔。

以我的Java環境變量為例,我隻配置了兩個環境變量

path:  C:\Program Files\Java\jdk1.6.0_22

classpath: .;

希望以上内容對大家有所幫助。

PS: 另外,配置完環境變量後,請重新開啟cmd視窗,這時候在新的cmd視窗執行指令才生效.