在學習JAVA的過程當中,涉及到多個環境變量(environment variable)的概念,如PATH。正確地配置這些環境變量,是可以順利學習、開發的前提。而常常出現的問題是:有的學習者可以按照提示一步一步地正確配置,但時間一長就忘了,出現了問題也無從下手。究其緣由,就是對這些概念沒有理解,知其然但不知其因此然。下面的內容,就是幫助你們知其因此然。html
環境變量(environment variables)通常是指在操做系統中用來指定操做系統運行環境的一些參數,如:臨時文件夾位置和系統文件夾位置等。java
環境變量是在操做系統中一個具備特定名字的對象,它包含了一個或者多個應用程序所將使用到的信息。例如Windows和DOS操做系統中的path環境變量,當要求系統運行一個程序而沒有告訴它程序所在的完整路徑時,系統除了在當前目錄下面尋找此程序外,還應到path中指定的路徑去找。用戶經過設置環境變量,來更好的運行進程。windows
JAVA的初學者,必需要學會配置PATH環境變量,不然沒法編譯、運行JAVA程序。那麼,爲何要配置PATH環境變量呢?PATH環境變量是作什麼的呢?咱們從一個常見的問題入手。tomcat
當咱們安裝好JAVA後,若沒有正確配置PATH環境變量,則在命令行窗口(開始->運行->輸入cmd,回車)下運行命令java -version(顯示JAVA的版本)命令時,會出現以下的錯誤提示信息:編輯器
這條錯誤信息的意思是,你要求運行的「java」這條命令我不認識,不知道是個什麼玩意兒。那麼究竟這個「java」命令是何方神聖呢?在JDK的安裝目錄下(個人是D:\Java\jdk1.6.0_24),有一個bin目錄。打開此目錄,會發現大量的可執行文件,後綴名爲exe的文件。其中有一個可執行文件即爲java.exe。如今在命令行窗口下把當前目錄切換到這個bin目錄下(Shift+右鍵)。工具
在此目錄下,運行dir命令,顯示當前目錄下的全部文件和目錄。從顯示結果中,咱們能夠清楚地看到「java.exe」這個文件。以下圖所示:學習
實際上咱們執行「java」命令,就是要運行「java.exe」這個可執行文件(咱們運行其餘命令,本質上也是要執行某個程序文件)。咱們如今再來執行 java -version 這條命令試試。在命令行窗口下鍵入java -version,回車,結果以下圖所示:spa
看來此次執行成功了。執行java -?可查看此命令的幫助信息。能夠看到它有不少選項,-version只是其中之一。另一種方式是,寫出這些可執行文件的完整(絕對)路徑(例如:D:\Java\jdk1.8.0_31\bin\java -version),就能夠在任何目錄下執行了。讀者可自行嘗試。操作系統
與java命令相似,javac命令目前也能在bin目錄下執行,但到其餘目錄下就只能寫出其完整路徑了。在學習JAVA的過程當中,咱們常常須要使用javac和java這兩條命令來編譯、運行咱們的JAVA程序。難道咱們每次運行這兩條命令都要先切換到bin目錄下嗎或寫出一長串的絕對路徑嗎?能不能有一個辦法,讓咱們可以在任何目錄下都能自如地運行這些命令呢?命令行
明白了這些,咱們就把bin目錄的完整路徑添加到PATH中。在命令行窗口下,可以使用set命令完成此類的任務。直接運行set,會顯示系統當前全部環境變量的值,運行set /?,會顯示關於此命令的幫助信息。
使用set命令設置環境變量值的格式爲:set 環境變量名=環境變量值。咱們可使用命令set path=D:\Java\jdk1.8.0_31\bin將java等程序文件所在的目錄添加到PATH環境變量中(Windows下環境變量名不區分大小寫,這與UNIX不一樣)。可是這樣會使PATH的值只有「D:\Java\jdk1.8.0_31\bin」,它預先設定供其餘程序使用的值就都被覆蓋了。所以,咱們應該把值「D:\Java\jdk1.6.0_24\bin」追加到PATH中。爲此,咱們可使用以下命令:
set path=%path%;D:\Java\jdk1.8.0_31\bin
把PATH放在兩個百分號之間,指把PATH原有的值取出。其後的分號表示分隔不一樣的路徑值,以後纔是咱們要添加的值。注意,請在英文輸入法狀態下使用此命令。如今咱們轉到任意一個目錄下執行java -version命令試試。結果以下圖所示:
可見運行徹底成功。可是這種使用set命令的方式設置的環境變量只對當前命令行窗口有效。一旦關閉此窗口,再次運行另外一個命令行窗口時,PATH環境變量仍是原來的值。所以,咱們必須在Windows下修改PATH環境變量。步驟以下:
右擊桌面「個人電腦」圖標->屬性->高級->環境變量,就打開了了設置環境變量的對話框。上面部分是爲某個用戶設置。Windows設計爲可多用戶使用一臺機器,每人一個帳戶。爲某個帳戶設置的變量只對該用戶有效。下面部分是設置系統變量,對系統中的每一個用戶有效。如今通常電腦都只有一個用戶,即Administrator。所以只須要爲此帳戶設置便可。找到PATH環境變量,點「編輯」。在「變量值」框內現有值的後面輸入英文輸入法的分號,而後添加你想添加的值(在這裏是D:\Java\jdk1.8.0_31\bin)。一路肯定,OK!
如今再打開一個命令行窗口,輸入echo %path%命令查看path的值(或者直接使用path命令亦可)。
如今,咱們能夠看到bin目錄已被添加到PATH中,再在任何目錄下運行java -version命令,都可成功。以下圖所示:
其實咱們執行其餘命令都是這個原理。舉例來講,當你顯示PATH的值時,你會發現第一個值是C:\WINDOWS\system32。在Windows下打開這個目錄,你會看到不少可執行文件,它們的名字與咱們經常使用的命令的名字是一致的。也就是說,咱們執行這些命令,實際上系統就是根據PATH的這個值找到了相應的可執行文件,再運行這些文件的結果。如attrib.exe文件
它對應於attrib命令,這是顯示/設置文件屬性的命令,以下圖所示:
如今咱們經過命令set path=(等號右邊什麼都沒有,或隨便寫點東西)來清除PATH的值,再來運行attrib命令試試。以下圖所示:
能夠看出,徹底相同的命令,如今已沒法執行而報錯了。
下面再經過命令set path=c:\windows\system32(Windows下不區分大小寫,所以windows與WINDOWS都正確),把attrib.exe文件所在的路徑添加到PATH中,再運行試試。以下圖所示:
很顯然,目前已可以正確運行。另一個常見的例子就是format.com(.com文件是另外一種能夠執行的文件),不過此命令是用來格式化的,實驗時請當心,不要因爲失誤而格式化了某個盤。並且,根據上面的描述,在PATH環境變量未正確配置的時候,寫出這些文件的絕對路徑(完整路徑),亦能夠正確執行。讀者可自行實驗(在此聲明,因爲已事先提醒,所以凡是因爲誤操做帶來的數據丟失,概不負責!)。
咱們如今啓動一個命令行窗口,按上述的方法把PATH的值所有清除,而後再運行dir、cd等命令。出乎咱們意料的是,它們仍然可以正確執行。這,又是什麼緣由呢?
咱們來看看剛纔那些報告錯誤的信息,它們都提到了「內部命令」和「外部命令」的概念。那麼什麼是內部命令和外部命令呢?
內部命令和外部命令是DOS(disk operating system,微軟早期基於命令行的操做系統)時代的概念,百度百科的解釋是:內部命令是隨每次啓動的COMMAND_COM裝入並常駐內存,而外部命令是一條單獨的可執行文件。粗略地講,所謂內部命令就是最核心、使用最多的命令。爲了提升響應速度,系統一啓動,這些命令就被加載到內存,所以能夠迅速、直接地執行;而外部命令因爲使用相對較少,就不預先加載到內存,當用戶使用時,再到硬盤上(c:\windows\system32)找相應的可執行文件,而後加載到內存執行。像dir、cd等都是內部命令,而諸如attrib、format等都是外部命令。儘管DOS的時代早已成爲了歷史,但某些操做卻必須在命令行模式下完成,對專業人士來講更是如此。所以,Windows產品一直保留着命令行模式這個工具。
另一個概念就是批處理文件(後綴名爲.bat,來源於批量的英語單詞batch),它是另一種能夠執行的文件。簡單地說,批處理文件包含了不少DOS命令。文件執行時,就一條一條地執行這些命令。不必定順序執行,像通用的程序設計語言同樣,它也有本身的流程控制。批處理文件建立很簡單:用任何一個文本編輯器(如Windows的記事本)建立一個文本文件,而後把後綴名改成.bat便可。建立好的批處理文件,你也能夠用文本編輯器打開,查看它的「源代碼」。
Tomcat是一個免費開源的Servlet/JSP容器,深受廣大JAVA初學者喜好。這其中須要設置CATALINA_HOME環境變量,值爲tomcat安裝目錄(個人是d:\tomcat7),不然會出現以下的錯誤信息:
這句話的意思就是沒有正確設置CATALINA_HOME環境變量,而此變量是運行Tomcat所必須的。而當你不理會這個信息,在命令行窗口把當前目錄切換到tomcat安裝目錄下的bin目錄下,再執行批處理文件startup.bat來啓動tomcat時,發現也能夠成功。難道如今不須要CATALINA_HOME環境變量了嗎?
實際上,在startup.bat中,首先判斷CATALINA_HOME是否爲空。若爲空,就把當前目錄設爲CATALINA_HOME的值。而後查找CATALINA_HOME所指示的目錄下是否有個bin目錄,此bin目錄下是否有個叫作catalina.bat的批處理文件(此文件負責啓動tomcat)。若沒有,則把當前目錄的父目錄設爲CATALINA_HOME的值,再重複上述的查找。若仍失敗,就報圖十所示的錯誤。所以,當你在tomcat安裝目錄下的bin目錄下運行startup.bat文件時,它就會按照上面所說的第二種方式自動正確設置CATALINA_HOME的值,由於catalina.bat文件就在tomcat安裝目錄下的bin目錄裏。
雖然在此種狀況下能正確運行,但仍是建議你正確設置CATALINA_HOME環境變量。與PATH不一樣的是,PATH系統自己就由,而CATALINA_HOME須要你本身「新建」,在「環境變量」窗口點「新建」便可。
爲了可以在任何目錄下都能運行tomcat安裝目錄下bin目錄裏的批處理文件,如startup.bat,可把此目錄添加到PATH環境變量中(個人是d:\tomcat7\bin)。爲了提升靈活性,可在PATH環境變量的最後添加上%catalina_home%\bin(與前一個值之間不要忘了用英文的分號隔開)。把catalina_home放置在兩個百分號之間,表示引用這個環境變量的值。這樣,當你把tomcat的安裝目錄換了之後,就只須要修改catalina_home的值,而不須要修改PATH的值了,由於它能夠自動計算出新的正確值。
文章出處:藝意
文章參考:NashMaster2011