標籤:java path classpath 環境變數 jdk
一、配置環境變數path
在Java開發中,為了編譯、運行程式,經常會使用javac、java等命令,那麼這兩個命令到底是什麼呢?為了弄清楚,我們去jdk中找找看。
通過尋找,終於在D:\Java\jdk1.7.0_51\bin(jdk安裝目錄,可能會不同)下發現了它們的蹤跡。會發現javac與java命令本質上是兩個EXE檔案。
在上一篇部落格淺析Windows系統內容變數中, 講訴了為了方便在任意目錄下啟動EXE檔案,需要配置環境變數。那麼,現在來為java配置環境變數。詳細步驟在淺析Windows系統內容變數一文中已經講得很透徹了,這裡就不再贅述了。將D:\Java\jdk1.7.0_51\bin配置到path中即可。
到上面為止,環境變數已經完完全全配置好了。
(可跳過)再看看D:\Java\jdk1.7.0_51\bin,我們有時候會jdk移到另一個盤(例如E盤),那麼會變成E:\Java\jdk1.7.0_51\bin;或者我們會將jdk1.7.0_51重新命名為jdk1.7。總而言之D:\Java\jdk1.7.0_51是很容易改變的(bin目錄一般不會去改變它),同時為了方便日後使用Tomcat伺服器,我們需要將D:\Java\jdk1.7.0_51單獨抽出來,放入一個變數中,日後改變了只需要來改變該變數,而不需要改動path。
a.建立一個JAVA_HOME變數,賦值為D:\Java\jdk1.7.0_51;
b.將path中的D:\Java\jdk1.7.0_51\bin修改為%JAVA_HOME%\bin。
好了,環境變數path就配置完了。試試能否在任意目錄下啟動javac.exe。
在C:\Users\lenovo下成功啟動javac.exe,說明配置成功。
二、配置系統變數classpath
利用C、C++等語言寫的程式會產生EXE檔案,那麼java產生的也是EXE檔案嗎?答案是否定的,java產生的是class檔案,無法通過雙擊啟動,只有通過java命令來啟動。那麼,同樣的問題來了,能否在任意目錄下通過java命令來啟動它呢?
答案無疑是肯定的,和EXE檔案一樣,只需配置一個環境變數(classpath)即可。
建立一個變數並賦值為class檔案所在目錄(例如在E盤)。
好了,來檢驗一下,在E盤下有一個class檔案,執行命令。
三、目前的目錄與環境變數配置的目錄孰先孰後
假設環境變數配置的是E:\,在E盤和F盤下各有一個Test.class檔案,但是他們的輸出結果不一樣,E盤輸出“我是環境變數配置的目錄的檔案”,F盤輸出“我是目前的目錄的檔案”。現在所在目錄為F盤,此時如果鍵入java Test,結果會是什麼呢?
結果顯示,執行的是E盤(環境變數配置的目錄)下的class檔案。此時如果刪除E盤下的Test.class檔案,在到F盤下鍵入java Test,結果又會是什麼呢?
結果顯示,執行的是F盤(目前的目錄)下的Test.class檔案。
小結一下:對於class檔案,與exe檔案相反,會先在環境變數配置的目錄中尋找檔案,存在就執行;否則再去目前的目錄下尋找。
四、說點惡搞的
先看片,
從圖片中可以看出,我先刪除了E盤下的Test.class檔案,然後到F盤啟動Test檔案,不同的是,兩次執行時環境變數配置的不一樣,環境變數唯一區別是後面的一個分號,一個有分號,一個沒有。會發現結果截然不同。
其實,加了分號的,會先到環境變數配置的目錄下尋找檔案,尋找就執行,不存在就在目前的目錄下來尋找執行;而不加分號的只會在環境變數中尋找檔案,尋找就執行,否則就直接結束。
Java環境變數的配置