JAVA為什麼要配置環境變數,怎樣配置

一路前行發表於2015-01-18

自己總結些再加抄點:
安裝JDK後要配置環境變數,主要有三個:
1 JAVA_HOME ->為JDK的安裝目錄,如:F:\JAVA\jdk1.6.0_04
2 CLASSPATH ->到哪裡找需要執行的.class檔案,如: .;%JAVA_HOME%\lib;
前面是一個點[.]再加一個分號[;]再以分號結束[;]
為什麼要加點[.]在編譯java檔案時,如javac xxx.java 即會在當前目錄下生成xxx.class檔案,
然後再用java xxx執行,系統會在當前目錄下找xxx.class檔案,所以要加點,代表是在當前目 錄下找class檔案來執行。
3 path ->javac.exe的執行程式路徑,如:%JAVA_HOME%\bin;
開始選單->執行->cmd,在控制檯裡輸入regedit,回車後看到登錄檔出來了!其過程是當輸入regedit時候,系統會去系統環境變數裡找這個程式的可執行檔案路徑。開啟系統環境變數的設定地方,會看到系統變數windir的值為%SystemRoot%(其實也就是c:\WINDOWS若系統裝在c盤的話),我們再開啟c:\WINDOWS,可以找到一個叫regedit.exe的程式!
設定系統變數的目的:為了使系統可以找到程式的執行路徑!
在設定環境變數path時候,之所以要選擇C:\Java\jdk1.6.0\bin(JDK的安裝目錄)的原因呢?開啟該目錄,發現裡面全是一些可執行檔案,其中有我們最熟悉的javac.exe,java.exe等等。是啊,之所以要選擇bin是因為當我們在編譯程式的時候,在控制檯輸入javac Hello.java是,系統要去系統環境變數下面找javac.exe的執行程式路徑。

首先得介紹下面幾個引數的作用:
current directory(當前目錄):
當前在用的目錄就是當前目錄。比如說當你開啟NOTEPAD,並處於執行狀態時候,當前目錄就是c:/windows;如果你用cmd命令開啟命令列視窗,當前目錄就是c:\windows\system32; 如果你在用java這條指令,當前目錄就是JAVA下的BIN目錄所在的路徑,因為java.exe在bin裡面。
在java開發配置環境變數時,系統預設(我們對classpath不做任何設定時)的路徑也是當前目錄。
JAVA_HOME:
它是指jdk的安裝目錄,像D:\j2sdk1.4.2_16。
可以新建一個JAVA_HOME變數,它的取值為D:\j2sdk1.4.2_16。
為什麼要設定它呢,不設定可不可以呢?不設定也是可以滴,但是最好還是設定一下。
我們現在就當它是一個變數代換 JAVA_HOME = D:\j2sdk1.4.2_16,就是為了避免多寫字,它還有一個好處就是當我們需要改變某個jdk時,只需要改JAVA_HOME的值就可以了。等在後面看了Tomcat的啟動分析時你就明白了。
當在環境變數中引用它的時候要用%JAVA_HOME%來表示D:\j2sdk1.4.2_16。

Path:
系統變數Path告訴作業系統可執行檔案(*.exe、*.bat等)所在的路徑,當OS(作業系統)發現某個*.exe時,windows預設從當前目錄開始查詢這個命令,若查不到,OS就會到Path所設定的路徑中去尋找該命令,然後執行。
系統預設的系統變數為:Path = %SystemRoot%; %SystemRoot%\system32; %SystemRoot%\System32\Wbem
就是說處於上面3個目錄(多個變數用分號隔開)中的*.exe檔案,可以在任意地方被執行(在 執行視窗能直接執行的命令,像cmd、notepad等,基本都在上面的3個目錄裡面),所以他們可以直接執行。
上面的%SystemRoot%是什麼意思呢?%SystemRoot%就是安裝作業系統的時候,系統預設的安裝路徑
若你的windows xp裝在C:/WINDOWS
則你的%systemRoot%路徑就是c:/windows
%systemRoot%只是一個符號,代表你的系統安裝目錄
下面是常見系統預設安裝路徑:
98----c:/windows
2000--c:/winnt
2003--c:/windows
xp----c:/windows
當我們要進行java開發時,OS經常需要用到java.exe、javac.exe等,(若jdk安裝在D:\j2sdk1.4.2_16)因此應該將D:\j2sdk1.4.2_16\bin(%JAVA_HOME%\bin)加入到系統的path中去。
注意:如果你加入的位置不是在最後,那還需要在bin後面加上英文狀態下的分號:%JAVA_HOME%\bin;多個變數之間要用分號隔開,如果它前面沒有,你就加一個。
明確一下:%JAVA_HOME%\jre\bin 這個路徑是不需要加入Path的。參考:http://java.sun.com/javase/6/docs/technotes/tools/windows/jdkfiles.html
CLASSPATH:
CLASSPATH是專門針對java的,它相當於windows的path;path是針對整個windows的。
CLASSPATH告訴java虛擬機器(jvm)要使用或執行的*.class檔案放在什麼地方。
所謂的JVM就好像是在微軟OS上面再啟用另外一個OS,對JVM來說CLASSPATH就好像是對微軟OS來說的PATH,所以要用jvm開執行程式就需要設定classpath,然而jvm像windows一樣它也有個預設的查詢class檔案的路徑,對剛開始學習java的我們來說,預設的已經夠我們用了,那就是當前路徑,因此不設定classpath也可以。
在windows中 classpath 大小寫沒有關係,其他的環境變數名稱也一樣。
參照:
http://java.sun.com/javase/6/docs/technotes/tools/windows/classpath.html
如果你在classpath中用到 other resource files,那說明你已經熟悉classpath了,你可以自己隨意設定。
當我們不設定classpath時,系統預設的classpath是當前目錄,如果你個人想設定classpath的話,那麼務必在classpath中加入" ." ,這個英文狀態下的點就表示當前目錄。
至於classpath中要不要加入其他的路徑(包括檔案目錄、包的根目錄等),這要看開發的需要,一般我們初學者是用不到的。
path的設定倒沒有什麼疑惑,但是classpath就有疑惑了,到底裡面該不該加rt.jar ,dt.jar ,tool.jar呢?
可以肯定的是rt.jar是不需要的,jdk會自動載入。你可以用 java -verbose 命令來檢視。
我們可以來研究一下%JAVA_HOME%\lib底下的 tools.jar 和 dt.jar 是甚麼咚咚:
http://java.sun.com/javase/6/docs/technotes/tools/windows/jdkfiles.html 或者
http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/jdkfiles.html
那tools.jar,dt.jar到底需不需要加進classpath呢?我查過一些資料,在Sun JDK 1.2及後續版本中,包含了一組可在程式執行時刻編譯和執行Java程式碼的API。這些API被包含在tools.jar類庫中。這個功能允許Java程式在執行時動態編譯、執行小的程式碼塊,在有些情況下這個功能會讓Java應用程式的架構更加靈活、開放。本來還有個例子我看得不是太懂,就不貼出來了。
如果您現在還未明白什麼是動態編譯或者是否需要“動態編譯java程式”,那就當作不需要;系統自己預設設定,閣下您也預設好了 ^_^
至於dt.jar包,在jdk1.4.0之後不用匯入它,執行時會自動匯入--這個是我在蒐集了n個資料後選擇的一個較安全放心的答案
CATALINA_HOME:
長話短說了,tomcat啟動就不分析了,告訴你怎麼設就可以了,在Tomcat 4以前,用的是TOMCAT_HOME來表示Tomcat的安裝目錄,中間還用過TOMCAT_BASE,在Tomcat 4以後,採用了新的Servlet容器Catalina,所以環境變數的名字也改為了CATALINA_HOME,所以設定的時候不用把這3個變數都設了,要CATALINA_HOME就夠了。如果你安裝的是解壓縮版的也可以不用設定CATALINA_HOME,直接雙擊bin裡面的startup.bat就可以了,關閉的時候有shutdown.bat。
綜上:(在winXP中)以jdk安裝目錄為-D:\j2sdk1.4.2_16,tomcat安裝目錄為-D:\ApacheTomcat\apache-tomcat-6.0.14設定環境變數如下:你也可以參考http://java.sun.com/javase/6/docs/technotes/tools/windows/jdkfiles.html 自己決定那些是需要設定的。
JAVA_HOME = D:\j2sdk1.4.2_16
Path 環境變數中在最前面加入(若系統原來沒有就新建) %JAVA_HOME

相關文章