想起來(lái)兩年前剛學(xué)習Java時(shí),被要求先要設置環(huán)境變量,自然不解,隨后網(wǎng)上找答案。
現在想來(lái)感覺(jué)當時(shí)看到的答案都是神神叨叨,含糊不清,沒(méi)有幾個(gè)說(shuō)的明明白白的。當然也有可能是當時(shí)的我沒(méi)看明白吧…
總之,相信我,看了我的博客,你不用再找別的地方了!
環(huán)境變量 就是英文直譯:Environment Variable 。
變量 知道吧?
對,就是可以隨意給其賦值的一個(gè)存儲單元。
那么環(huán)境 呢?
首先,你把操作系統當做是一個(gè)最大的軟件,其它軟件如Office、LOL、JVM等等都是運行在這個(gè)軟件之內的小軟件。
那么,環(huán)境 就是操作系統這個(gè)軟件。
那么合起來(lái)“環(huán)境中的變量”是啥呢?
別逗我了你肯定懂了,環(huán)境變量就是操作系統這個(gè)軟件中的變量,也就是:全局變量!
作用呢?
環(huán)境變量沒(méi)什么特別的,變量在任何程序中的作用都是 被賦值/被使用!這個(gè)全局變量操作系統可以使用,其內的小軟件也可以使用!
變量是啥樣,環(huán)境變量就是啥樣……
XXX = XXX
1. 在Windows中
這里是WIN10,如下圖↓
當然,Windows是視窗系統,這里沒(méi)有顯式的給XXX=XXX這種方式,而是直接可以點(diǎn)擊【編輯】操作。
2. 在Linux中
export的意思就是(將局部變量)設置環(huán)境變量,也可以理解為上文說(shuō)的“全局變量”。這幾個(gè)環(huán)境變量已經(jīng)有一些默認值了,當然我們可以追加,比如: 知道了環(huán)境變量的作用了吧。那么,具體在Java中會(huì )用到哪些呢?它們的作用又是什么呢? 常見(jiàn)的Java相關(guān)環(huán)境變量與作用 這個(gè)其實(shí)是操作系統用的,用來(lái)指定操作系統需要使用到的程序的位置。對于Java來(lái)說(shuō),通常需要把JDK的bin目錄添加進(jìn)入 這個(gè)變量一定要保證將JRE/JDK的bin納入其中(這里我說(shuō)的其實(shí)不嚴謹,你可以把 比如,Tomcat的 所以,這個(gè)變量最需要設置。設置它,可保你萬(wàn)無(wú)一失,一生平安…… 同樣,這也是一個(gè)約定的變量,通常指JRE目錄。其實(shí)大部分Java程序不需要JDK,而是只需要其子集JRE,所以很多程序也會(huì )去取這個(gè)變量來(lái)用。 例如,Tomcat中某些 大意就是:Tomcat去取這倆變量,只要任意一個(gè)不為空就行,都不為空就用JRE_HOME了。因為T(mén)omcat不需要JDK中的工具,它只是運行Java程序而已。 這個(gè)變量如果你明確知道應用程序只需要設置這個(gè)就行(比如上面Tomcat的注釋?zhuān)?,那么它可以代替JAVA_HOME,且最好就用這個(gè)。 基本上,這個(gè)變量指的是:由 這個(gè)變量就跟所有Java寫(xiě)的程序有關(guān)了,不光其它Java程序會(huì )用到(比如Tomcat在某些情況下會(huì )用),我們寫(xiě)的Java程序也能用到了。但其實(shí)……,如果你用 可以在Java程序中用代碼獲取到當前 所以,這個(gè)變量在使用IDE進(jìn)行開(kāi)發(fā)的情況下,通常不需要手動(dòng)設置,只需要按常規IDE使用步驟(比如 這個(gè)變量,只有在你把 1. 需要在操作系統下設置的變量: 2. 很少需要設置的: 轉載注明出處:http://blog.csdn.net/u010297957/article/details/51334951
在 /etc/profile 文件中設置。
比如,其中有這樣一行代碼export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
# : 的意思是并列
PATH = /abc/def:$PATH
4. 在Java中
shell、.sh文件;Windows中的cmd、.bat文件。
PATHPATH中,這樣你就可以在任意目錄下使用bin下面的javac.exe、java.exe等。javaw.exe等這類(lèi)文件復制一份放到任意一個(gè)PATH路徑下,不一定是JRE/JDK也行),這樣很多Java程序才能啟動(dòng),比如Eclipse。JAVA_HOMEJAVA_HOME是一個(gè)約定,通常它指的是JDK的目錄。如果需要JDK的話(huà),大部分程序會(huì )默認去環(huán)境變量中取JAVA_HOME這個(gè)變量。
.bat/.sh文件中就會(huì )默認去取JAVA_HOME來(lái)用。JRE_HOME.bat文件中這樣說(shuō)到:rem JAVA_HOME Must point at your Java Development Kit installation.
rem Using JRE_HOME instead works as well.
rem
rem JRE_HOME Must point at your Java Runtime installation.
rem Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME
rem are both set, JRE_HOME is used.CLASSPATHAppClassLoader加載的class路徑。(這個(gè)涉及到Java的類(lèi)加載機制,大家先去了解一下然后就會(huì )明白了)。Eclipse的話(huà)你還是只需要點(diǎn)擊點(diǎn)擊BuildPath就行了,還是沒(méi)有讓你顯式的用XXX=XXX這種方式。不過(guò)如果你用Command Line來(lái)運行Java程序的話(huà)通常就會(huì )用到set CLASSPATH了。CLASSPATH的內容,像這樣:System.getProperty("java.class.path")
//輸出是String內容是你項目的class文件的根目錄 + 你引用的jar包們的地址。類(lèi)似這樣
E:\test1\target\classes;E:\Java\Program Files\.m2\repository\mysql\mysql-connector-java\5.1.38\mysql-connector-java-5.1.38.jar...Build Path)IDE會(huì )幫你做。CATALINA_HOME
這是Tomcat用的。叫CATALINA這個(gè)名字我猜是因為T(mén)omcat默認服務(wù)(也就<Service></Service>標簽)的名字就是CATALINA。當然,不管是不是其實(shí)不重要,畢竟變量的名字可以隨意起(但最好見(jiàn)名知意),重要的是它存什么值。它的值代表當前tomat根目錄,比如:E:\apache-tomcat-7.0.55。.bat/.sh等用來(lái)啟動(dòng)Tomcat的文件移動(dòng)位置了(就是不在原來(lái)的tomcat\bin下面了)時(shí)才需要指定。
具體場(chǎng)景,比如說(shuō)在Linux中你將catalina.sh復制到/etc/rc.d/init.d/下做自啟動(dòng)service時(shí)就需要設置。總結如下:
PATH中包含JRE/JDK的bin目錄;JAVA_HOME或者JRE_HOME。都設也可以,偷懶就只設 JAVA_HOME就可以。
CLASSPATH、CATALINA_HOME
聯(lián)系客服