1. 程式人生 > >java環境變數解析

java環境變數解析

java_home
C:\Program Files\Java\jdk-10.0.1

classpath

.;%JAVA_HOME%\lib\dt.jar;
%JAVA_HOME%\lib\tools.jar

path
%JAVA_HOME%\bin;
%JAVA_HOME%\jre\bin;
C:\Program Files (x86)\Common Files\Oracle\Java\javapath;
%SystemRoot%\system32;
%SystemRoot%;
%SystemRoot%\System32\Wbem;
%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;

網上看到比較好的:

原文地址:
https://www.cnblogs.com/nulisaonian/p/6027771.html
讀者可以先看下面的原文內容,再看我新增的內容:
原文內容幫我解決了大部分疑惑,但還有一部分沒有解決:問題就是:
classpath:為什麼是.;%JAVA_HOME%\lib\dt.jar;
					%JAVA_HOME%\lib\tools.jar
	中的lib\dt.jar;lib\tools.jar
	我在java的目錄中根本沒有發現的,好吧。
	解決方案:
	轉載請註明出處:http://blog.csdn.net/ns_code/article/details/18547959
	本來想自己寫的,人寫的挺好,我想就算了吧;
	感謝兩位大佬。

原文內容:
淺析JAVA_HOME,CLASSPATH和PATH的作用:
1,設定JAVA_HOME:  java的目錄
一、為了方便引用,比如,你JDK安裝在C:\ProgramFiles\Java\jdk1.7.0目錄裡,則設定JAVA_HOME為該目錄路徑, 那麼以後你要使用這個路徑的時候, 只需輸入%JAVA_HOME%即可,避免每次引用都輸入很長的路徑串;

二、歸一原則, 當你JDK路徑被迫改變的時候, 你僅需更改JAVA_HOME的變數值即可, 否則,你就要更改任何用絕對路徑引用JDK目錄的文件, 要是萬一你沒有改全, 某個程式找不到JDK, 後果是可想而知的----系統崩潰!

三、第三方軟體會引用JAVA_HOME變數, 不然, 你將不能正常使用該軟體, 以後用JAVA久了就會知道, 要是某個軟體不能正常使用, 不妨想想是不是這個問題.

2,設定CLASSPATH:   為了找到執行目標,java不同於linux上的可執行檔案,linux的可執行檔案提前都編譯連結好了,最終是一個打包好的檔案。java有一堆可執行檔案:*.class檔案. CLASSPATH就是約定class檔案的查詢路徑。
這是一個比較折磨初學者的問題, 這個變數設定的目的是為了程式能找到相應的".class"檔案, 不妨舉個例子: 你編譯一個JAVA程式---A.java, 會得到一個A.class的類檔案,你在當前目錄下執行java A, 將會得到相應的結果(前提是你已經設定CLASSPATH為"."). 現在, 你把A.class移到別的目錄下(例如:"e:\"), 執行java A, 將會有NoClassDefFindError的異常,原因就是找不到.class檔案, 現在你把CLASSPATH增加為:".;e:\"再在任何目錄下執行java A, 看看會有什麼結果~~:)~~~,一切正常, java命令通過CLASSPATH找到了.class檔案!

classpath=c:\test就表示執行執行命令時去c:\test資料夾去找需要被執行的class檔案
在java5之前該路徑是不能指定當前路徑的,除非這樣設定:classpath=.;c:\test,就表示先在當前目錄找class檔案,要是沒找到就到c:\test去找;(當一個變數有多個值時,多個值之間是有英文的分號隔開)
設定從當前所在目錄查詢(java1.5後預設):set classpath=.

3,設定PATH:(必須設定)
道理很簡單, 你想在任何時候都使用%JAVA_HOME%\bin\java等來執行java命令嗎, 當然不會, 於是, 你可以選擇把%JAVA_HOME%\bin新增到PATH路徑下, 這樣, 我們在任何路徑下就可以僅用java來執行命令了.
(當你在命令提示符視窗輸入你個程式碼時,作業系統會在當前目錄和PATH變數目錄裡查詢相應的應用程式,並且執行.)