淺談Java中path、classpath環境變量的配置問題

一、 編譯和運行Java程序必須經過兩個步驟:


1、將源文件編譯成字節碼;

2、解釋執行平臺無關的字節碼程序。


二、問題


    以上兩個步驟分別需要使用javac和java兩個命令(javac命令對java源文件進行編譯生成class文件,java命令對生成的class文件進行運行),如果我們直接在cmd命令行窗口裏依次輸入javac和java命令,可能會看到以下錯誤:

wKiom1SY4q_ReDEGAABiJpEuxqw472.jpg


    另外當我們移動了class文件後,執行java命令時,會出現以下錯誤:

wKioL1SY5LuTyxbmAABQmWCoAno074.jpg


三、分析問題


    我們已經在計算機裏安裝了JDK,而jdk的安裝路徑下也包含了java和javac命令,爲什麼會出現這樣的錯誤

 錯誤一原因是命令行或控制檯沒有找到javac和java命令。

    當我們輸入javac或java命令時,命令行會先在當前目錄中(上例爲:E:/Demo/java)查找是否有javac.exe或java.exe 這個文件,若沒有則在系統的path環境變量中查找。


 錯誤二:這是因爲命令行沒有找到class文件。

    當我們執行java命令時,若沒有配置classpath環境變量,則java虛擬機會在當前目錄下查找class文件(即Java類),若當前目錄下沒有,則會出錯;若我們配置了classpath環境變量,則java虛擬機會直接到環境變量指定的路徑查找。

    

四、解決方案

 

錯誤一:  

    根據問題分析,錯誤一的解決方案有兩種:一是需要我們找到文件所在目錄,二是直接在系統裏配置path環境變量。

很顯然第一種方法太麻煩了些,而第二種方法可謂是一勞永逸,它可以讓我們在任意目錄下都可以執行程序。那得如何配置path環境變量呢?


path環境變量


   Windows操作系統根據Path環境變量來查找命令。PATH環境變量的值是一系列路徑,如我的計算機裏的path變量是這樣的:

D:\TELLHOW\java\jdk1.5.0_09\bin;%CATALINA_HOME%\lib;%CATALINA_HOME%\bin;C:\Windows\System32;D:\app\Administrator\product\11.2.0\dbhome_1\BIN;D:\Program Files\MySQL\MySQL Server 5.5\bin   

Windows將在這一系列的路徑中依次查到命令,如果能找到這個命令,則該命令是可執行的,否則就會出錯。

(path和PATH在Windows操作系統中是沒有區別的,它不區分大小寫)

    因此,我們只需找到javac和java命令的存放路徑,如:D:\TELLHOW\java\jdk1.5.0_09\bin,添加進path環境變量中即可,注意用“;”分號隔開。

wKioL1SZBrWwoSRGAAK6HEnasVY743.jpg

我們可以在命令行內直接輸入javac,按“Enter”鍵來驗證配置是否正確,若看到以上信息(這其實是javac.exe的使用信息,以後我們會用到裏面的幾個),則表示配置正確(這與路徑“E:/Demo/java”無關)。

    寫到這可能有人會問,“E:/Demo/java”是誰的地址呢?很顯然這是程序javac.exe所運行文件Test.java的路徑。


錯誤二


    幾乎每一本介紹java入門的書裏都會介紹classpath環境變量的配置,在網上也有很多,但對於classpath環境變量的作用則常常語焉不詳。

    其實,如果使用1.5以上版本的JDK,完全可以不用設置classpath環境變量就能正常運行程序。因爲1.5版本以上JDK有一個功能,它會自動搜索當前路徑下的類文件,而且使用Java的編譯和運行工具時,系統可以自動加載dt.jar(是關於運行環境的類庫,主要是swing的包)和tools.jar(是關於一些工具的類庫)文件中的Java類,因此不再需要設置classpath環境變量了。

    但是其之前的版本並沒有這樣的功能,所以我們會看到網上會有這樣的配置:.;C:\ProgramFiles\Java\jdk1.7.0_05\lib\dt.jar;C:\Program Files\Java\jdk1.7.0_05\lib\tools.jar;

這個配置中前面一點表示當前路徑,另外是將dt.jar和tools.jar兩個文件添加到classpath環境變量裏。

    從上不知道你有沒有發現問題,一個1.7版本的竟然還在使用1.4及以前的classpath環境變量配置方法,這似乎說明了一個問題,IT行業飛速發展,知識在不斷地更新,網上其實有很多的知識是滯後的,所以我們必須重視這樣的一個問題,不能太過實用主義。

    那麼classpath環境變量的作用是什麼呢?

    如果我們有很多類文件並放在不同的路徑下,當我們需要執行指定路徑下的文件時,這時classpath環境變量就體現了它的用處。


五、問題延伸


    不知你有沒有想過,在一些特殊的情況下我們可能會使用臨時的環境變量配置。比方說我們借用別人的計算機時,卻不能改動別人的計算機設置,這時你會怎麼做?我想最好的辦法就是一個移動U盤加臨時環境變量配置。

    臨時環境變量配置可以使用DOS命令,在cmd命令行中輸入set,你會看到你的計算機中所有的環境變量,如圖所示:

wKiom1SZGeWjBXS3AAOXL6wd63c808.jpg

而通過輸入set  path可顯示出path的所有變量,如圖:wKiom1SZGsWTsc8wAAEC8GHjIwM811.jpg


而設置臨時的path環境變量則只需輸入:

set  path=F:/Demo/java即可,它對計算機系統中的配置沒有影響。

wKiom1SZG9fBZs2qAACGRNTRCuo063.jpg

另有輸入:

set path=F:/Demo/java;%path%

這表示在原有的設置上添加一個路徑,對對計算機系統中的配置沒有影響。

總結一下就是:

set:用於查看本機的所有環境變量;

set 變量名:查看一個具體的環境變量;

set 變量名=:清空一個環境變量;

set  變量名=具體值:給指定變量定義具體指;

set 變量名=具體值;%path%:在原有環境變量基礎上添加新值。

注意:這種配置方式只在當前dos窗口有效,窗口關閉後則配置消失。


    同理可得,classpath環境變量的臨時配置也是一樣,在此不多囉嗦。


    


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章