Java為什麼要設定環境變數、JAVA_HOME
1. 為什麼要說這個問題?
想起來兩年前剛學習Java時,所有教程第一步都是要求先要設定環境變數。自然不解這是個什麼東西,隨後網上找答案。
現在想來感覺當時看到的答案都是神神叨叨、含糊不清,根本沒有人把問題說明白!使得你「知其然而不知所以然」。當然也有可能是當時的我沒看明白吧……
現在,相信我!看了我的部落格,你不用再找別的地方了!
2. 什麼是環境變數?
環境變數 就是英文直譯:Environment Variable 。
變數 知道吧?
對,就是可以隨意給其賦值的一個儲存單元。
那麼環境 呢?
首先,你把作業系統當做是一個最大的軟體,其它軟體如Office、JVM、LOL等等都是執行在這個軟體之內的小軟體。那麼,相對於這些小軟體來說,它們所處的「環境」就是作業系統這個軟體。
最後,合起來就是“環境中的變數”
「環境變數」就是作業系統這個軟體中的變數,即:作業系統提供給你的全域性變數!
環境變數有什麼作用呢?
環境變數沒什麼特別的,變數在任何程式中的作用都是“被賦值/被取值”!這個全域性變數作業系統可以使用,其內的小軟體也可以使用!
3. 環境變數長啥樣?有哪些?
變數長啥樣,環境變數就長啥樣……
XXX = XXX
在Windows中
下面是WIN10。Windows是視窗系統,我們不必顯式的使用
XXX=XXX
這種方式,因為系統給我提供了視窗,可以直觀的看到並編輯。如下圖:在Linux中
設定:
在
/etc/profile
檔案中設定,export
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
這幾個環境變數已經有一些預設值了,不過我們可以追加內容,比如修改
PATH
:# : 的意思是並列 PATH = /abc/def:$PATH
檢視:
檢視全部,使用
env
命令即可。檢視單個,可以使用
echo
:如echo $JAVA_HOME
。
4. 在Java中
我們終於知道了環境變數是什麼以及它的作用了。那麼,具體在Java中會用到哪些呢?它們的作用又是什麼呢?
有一點需要首先了解:環境變數大體上是給作業系統的直接上層程式用的。比如Linux中的
shell
、.sh
檔案;Windows中的cmd
、.bat
檔案。
常見的Java相關環境變數及其作用
PATH
PATH
是作業系統用的,用來指定作業系統需要使用到的可執行程式的位置。對於Java來說,通常需要把JDK的bin目錄新增進入PATH
中,這樣你就可以在任意目錄下使用bin下面的可執行程式,如javac.exe
、java.exe
等。這個變數一定要保證將JRE/JDK的bin納入其中(這裡我說的其實不嚴謹,你可以把
javaw.exe
等這類檔案複製一份放到任意一個PATH
路徑下,不一定是JRE/JDK也行),這樣很多Java程式才能啟動,比如Eclipse
。JAVA_HOME
JAVA_HOME
是一個約定,通常它指的是JDK的目錄。如果需要JDK的話,大部分程式會預設去環境變數中取JAVA_HOME
這個變數。例如,Tomcat的
.bat/.sh
檔案中就會預設去取JAVA_HOME
來用。所以,這個變數最需要設定。設定它,可保你萬無一失,一生平安……
JRE_HOME
同樣,這也是一個約定的變數,通常指JRE目錄。其實大部分Java程式不需要JDK,而是隻需要其子集JRE,所以很多程式也會去取這個變數來用。
例如,Tomcat中某些
.bat
檔案中這樣說到: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.
大意是說:Tomcat去取這倆變數,只要任意一個不為空就行,都不為空就用JRE_HOME了。因為Tomcat不需要JDK中的工具,它只是執行Java程式而已。
這個變數如果你明確知道應用程式只需要設定這個就行(比如上面Tomcat的註釋),那麼它可以代替JAVA_HOME,且最好就用這個。
CLASSPATH
CLASSPATH
是約定的一個可以設定我們自己的.class, jar
檔案所在目錄的變數。不過某個Java程式可以自己決定取與不取這個變數。Tomcat 在某些情況下會去取,你自己的Java程式你不設定就會忽略它的。這和Java可執行程式:
java.exe
的可選配置-cp/-classpath
不是一個東西,僅是用意相似:java [-options] class [args...] (執行類) 或 java [-options] -jar jarfile [args...] (執行 jar 檔案) 其中選項包括: -cp <目錄和 zip/jar 檔案的類搜尋路徑> -classpath <目錄和 zip/jar 檔案的類搜尋路徑> 用 : 分隔的目錄, JAR 檔案 和 ZIP 檔案列表, 用於搜尋類檔案。
結論:基本上,你不需要它。
CATALINA_HOME
這是Tomcat用的。叫CATALINA這個名字我估計是因為Tomcat預設服務(也就
<Service></Service>
標籤)的名字就是CATALINA。當然,是不是其實不重要,畢竟變數的名字可以隨意起(但最好見名知意),重要的是它存什麼值。它的值代表當前tomat根目錄,比如:E:\apache-tomcat-7.0.55
。這個變數,僅當你移動了
.bat/.sh
等用來啟動Tomcat的檔案(就是不在原來的tomcat\bin
下面了)時才需要指定。比如,在Linux中你將catalina.sh
複製到/etc/rc.d/init.d/
下做自啟動服務時就需要設定一下。
Java程式碼中也有API能獲取環境變數:
獲取並列印
// 列印單個環境變數 final String env = System.getenv("PATH"); System.out.println(env); // 列印所有環境變數 final Map<String, String> envMap = System.getenv(); for (Map.Entry<String, String> env : envMap.entrySet()) { System.out.println(env.getKey() + "=" + env.getValue()); }
總結
最後我們總結一下:
需要在作業系統下設定的變數:
PATH
中包含JRE/JDK的bin
目錄。JAVA_HOME
或者JRE_HOME
。都設也可以,偷懶就只設JAVA_HOME
就可以。
很少需要設定的:
CLASSPATH
、CATALINA_HOME
。
相關推薦
Java為什麼要設定環境變數、JAVA_HOME
1. 為什麼要說這個問題? 想起來兩年前剛學習Java時,所有教程第一步都是要求先要設定環境變數。自然不解這是個什麼東西,隨後網上找答案。 現在想來感覺當時看到的答案都是神神叨叨、含糊不清,根本沒有人把問題說明白!使得你「知其然而不知所以然」。當然也有可能是
Java jdk設定環境變數
第一種方式: 找到安裝目錄(我這裡是M:\java\jdk\bin) 設定環境變數PATH 開啟搜尋小娜,輸入path。如果你是win7或者沒有小娜的win10自己百度如何找到環境變數。 3.點選設定環境變數 點選path,然後編輯 在
SpringBoot 啟動引數設定環境變數、JVM引數、tomcat遠端除錯
java命令的模版:java [-options] -jar jarfile [args...] 先貼一下我的簡單的啟動命令: java -Xms128m -Xmx256m -Xdebug -Xrunjdwp:server=y,transport=dt_socket,
jdk的安裝、不配置環境變數如何執行Java程式、Java為什麼可以跨平臺、為什麼要配置環境變數以及如何配置環境變數
一、jdk的下載大家可以自己去orcale自己進行下載http://www.oracle.com/technetwork/java/javase/downloads/index.html在這裡我給大家分享一下安裝包 https://pan.baidu.com/s/1-pYh
Java - 安裝jdk並設定環境變數
前言 雙十一買了臺新的筆記本,需要重新安裝下Java,這裡記錄下安裝的過程,畢竟萬事開頭難,就算是老手也不一定能一次就把Java安裝成功。 安裝jdk 作為一名Java開發,當然是要安裝jdk了,如果只是需要Java的執行環境,那麼安裝jre就足夠了。另外說下,jdk裡以及包含了jre了。 首先去官網
java linux(ubuntu) 環境變數設定
一https://www.cnblogs.com/hanshuai/p/9604730.html :whereis java //查詢java 安裝路徑:which java //查詢java 執行路徑:ls -lrt /usr/bin/java :ls -lrt
setenv、export函式設定環境變數
setenv函式 函式 setenv()用來改變或增加環境變數的內容。相關函式有 getenv,putenv,unsetenv。 表頭檔案為#include<stdlib.h> 定義函式 int setenv(const char *na
Mac 設定環境變數的位置、檢視和新增PATH環境變數
Mac 啟動載入檔案位置(可設定環境變數) ------------------------------------------------------- (1)首先要知道你使用的Mac OS X是什麼樣的Shell,使用命令 echo $SHELL 如果輸出的是:csh或者是tcs
bat批處理設定Java JDK系統環境變數檔案
自己修改第3行的Java安裝目錄就可以設定JAVA_HOME, classPath,追加到PATH的最前面 JAVA_HOME=C:\Program Files\Java\jdk1.6.0_10 classPath=%JAVA_HOME%\lib\tools.jar;%J
MAC中JAVA安裝和環境變數設定
其他系統安裝JAVA JAVA 安裝 #繞過驗證直接下載 wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie"
安卓ADT和JAVA安裝使用者環境變數的設定
假設ADT安裝目錄是: E:\AndroidSDK JAVA安裝目錄是: E:\AndroidSDK\Java 那麼使用者環境變數設定如下: 變數名: ANDROID_SDK 變數值: E:\AndroidSDK\Java 變數名:CLASSPATH 變數值: .;%JA
JDK安裝後為什麼要做環境變數設定
為什麼要設定環境變數? JDK安裝好後,如果不設定環境變數的話,開啟cmd,要直接javac這個命令,會提示: 因為電腦不知道javac這個命令是在C:\Program Files\Java\jdk1.8.0_65\bin\的這個路徑下面,所以我們要設定好環境變數,來讓電
Mac 可設定環境變數的位置、檢視和新增PATH環境變數
Mac 啟動載入檔案位置(可設定環境變數) ------------------------------------------------------- (1)首先要知道你使用的Mac OS X是什麼樣的Shell,使用命令 echo $SHELL 如果輸出的是:csh或者是tcsh,那麼你用的就
linux下getenv、putenv、setenv獲取設定環境變數
getenv(取得環境變數內容) 相關函式 putenv,setenv,unsetenv 表頭檔案 #include<stdlib.h> 定義函式 char * getenv(const char *name); 函式說明 getenv()用來取得引數n
linux檢視java jdk安裝路徑和設定環境變數
windows: set java_home:檢視JDK安裝路徑 java -version:檢視JDK版本 linux: whereis java which java (java執行路徑) echo $JAVA_HOMEecho $PATH 二:下面是配置linux
window10 java 設定環境變數
➢ 新建 JAVA_HOME 變數 變數名:JAVA_HOME 變數值:電腦上JDK安裝的絕對路徑 ➢ 新建 CLASSPATH 變數 變數名:CLASSPATH 變數值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
node傳參、npm scripts設定環境變數
{ "scripts": { "test": "set arg1=123 && set arg2=456 && node node-傳參.js arg1 arg2 argn" } } console.log(process.argv); con
MAC中JAVA安裝和環境變數設定,java 11
其他系統安裝JAVA JAVA 安裝 ,java 11 wget --no-check-certificate --no-cookies --header \ "Cookie: oraclelicense=accept-securebackup-cookie
Windows如何在cmd命令列中檢視、修改、刪除與新增、設定環境變數
首先明確一點: 所有的在cmd命令列下對環境變數的修改只對當前視窗有效,不是永久性的修改。也就是說當關閉此cmd命令列視窗後,將不再起作用。永久性修改環境變數的方法有兩種:一種是直接修改登錄檔(此種方法目前沒試驗過),另一種是通過我的電腦-〉屬性-〉高階,來設定系統的環
linux安裝jdk、設定環境變數
一、解除安裝Linux自帶的jdk # 檢視是否自帶了Java rpm -qa | grep java # 解除安裝Linux自帶的OpenJava yum remove -y java # 或者 rpm -e java 二、上傳或聯網下載jdk # 上傳或聯網下載JD