iamfancy(邊城狂人) 通常,我們需要設(shè)置三個環(huán)境變量:Java_HOME、PATH&n..."/>
您好,登錄后才能下訂單哦!
***轉(zhuǎn)***.NET/Message_Board/Send.ASP?sendto=iamfancy">iamfancy(邊城狂人)
通常,我們需要設(shè)置三個環(huán)境變量:Java_HOME、PATH 和 CLASSPATH。
JAVA_HOME:該環(huán)境變量的值就是 Java 所在的目錄,一些 Java 版的軟件和一些 Java 的工具需要用到該變量,設(shè)置 PATH 和 CLASSPATH 的時候,也可以使用該變量以方便設(shè)置。
PATH:指定一個路徑列表,用于搜索可執(zhí)行文件的。執(zhí)行一個可執(zhí)行文件時,如果該文件不能在當(dāng)前路徑下找到,則依次尋找 PATH 中的每一個路徑,直至找到。或者找完 PATH 中的路徑也不能找到,則報錯。Java 的編譯命令 (javac),執(zhí)行命令 (java) 和一些工具命令 (javadoc, jdb 等) 都在其安裝路徑下的 bin 目錄中。因此我們應(yīng)該將該路徑添加到 PATH 變量中。
CLASSPATH:也指定一個路徑列表,是用于搜索 Java 編譯或者運行時需要用到的類。在 CLASSPATH 列表中除了可以包含路徑外,還可以包含 .jar 文件。Java 查找類時會把這個 .jar 文件當(dāng)作一個目錄來進(jìn)行查找。通常,我們需要把 jdk 安裝路徑下的 jrelibrt.jar (Linux: jre/lib/rt.jar) 包含在 CLASSPATH 中。
PATH 和 CLASSPATH 都指定路徑列表,列表中的各項 (即各個路徑) 之間使用分隔符分隔。在 windows 下,分隔符是分號 (;),而在 Linux 下,分隔符是冒號 (:)。
下面分別說明三個環(huán)境變量在 Windows 和 Linux 下如何設(shè)置,不過在此之前,我們需要做個假設(shè)。假設(shè) JDK 在 Windows 下的安裝路徑是 C:jdk,在 Linux 下的安裝路徑是 /usr/local/jdk/。那么,安裝后的 JDK 至少會包括如下內(nèi)容:
C:jdk (/usr/local/jdk)
|-- bin
|-- demo
|-- include
|-- jre
| |-- bin
| `-- lib
`-- lib
***** 在 Windows 下設(shè)置
Windows 下使用 set 命令設(shè)置環(huán)境變量,為了使每一次啟動計算機(jī)都設(shè)置這些環(huán)境變量,應(yīng)該在系統(tǒng)盤根目錄下的 autoexec.bat 文件中進(jìn)行設(shè)置,如:
set JAVA_HOME=C:jdk
set PATH=%JAVA_HOME%bin;C:Windows;C:WindowsCommand
set CLASSPATH=%JAVA_HOME%jrelibrt.jar;.
有些版本的 Windows 不能用 %變量名% 來替換環(huán)境變量的內(nèi)容,那么就只好直接寫 C:jdk 而不是 %JAVA_HOME% 了。另外,C:Windows 和 C:WindowsCommand 是 Windows 會自動加入路徑的,所以可以從設(shè)置中去掉。如果在 autoexec.bat 中已經(jīng)設(shè)置了 PATH,那只需要將 %JAVA_HOME%bin 加到原來設(shè)置 PATH 的那條語句中就行了。
CLASSPATH 也可以根據(jù)需要設(shè)置或者加入其它的路徑,比如你想把自己寫的一些類放在 C:java 中,就可以把 C:java 也添加到 CLASSPATH 中去,set CLASSPATH=%JAVA_HOME%jrelibrt.jar;C:java;.。
注意,在 CLASSPATH 中包含了一個“當(dāng)前目錄 (.)”。包含了該目錄后,就可以到任意目錄下去執(zhí)行需要用到該目錄下某個類的 Java 程序,即使該路徑并未包含在 CLASSPATH 中也可以。原因很簡單:雖然沒有明確的把該路徑包含在 CLASSPATH 中,但 CLASSPATH 中的 “.” 在此時就代表了該路徑,如:
假設(shè)在 C:java 目錄下有可運行的類 HelloJava.class,那么
C:> set CLASSPATH=C:jdkjrelibrt.jar;. // 設(shè)置 CLASSPATH 環(huán)境變量,注意最后有一個 “.”
C:> cd java // 轉(zhuǎn)到 C:java 目錄
C:java> java HelloJava // 運行 HelloJava
Hello, Java. // 運行結(jié)果
C:java> _
該例將在 1.3.3 節(jié)中分析。
**** 在 Linux 下設(shè)置
Linux 下使用“變量名=變量值”設(shè)置變量,并使用 export 命令將其導(dǎo)出為環(huán)境變量。為了使每一次登錄都自動設(shè)置好這些變量,你需要在 ~/.bash_profile 里或者 ~./bashrc 里進(jìn)行設(shè)置,如
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/jre/lib/rt.jar:.
設(shè)置 PATH 時用的 $JAVA_HOME 是指替換變量 JAVA_HOME 的值到 $JAVA_HOME 所在位置。如上句實際就是 export PATH=/usr/local/jdk/bin:$PATH。這句中 $PATH 也是同樣的作用,不過這里的 PATH 是指以前設(shè)置的 PATH 變量的值,而非本次設(shè)置 PATH 變量的值。
注意,在 CLASSPATH 中包含了一個“當(dāng)前目錄 (.)”。包含了該目錄后,就可以到任意目錄下去執(zhí)行需要用到該目錄下某個類的 Java 程序,即使該路徑并未包含在 CLASSPATH 中也可以。原因很簡單:雖然沒有明確的把該路徑包含在 CLASSPATH 中,但 CLASSPATH 中的 “.” 在此時就代表了該路徑,例如
假設(shè)在 /home/fancy/java 目錄下有可運行的類 HelloJava.class,那么
[fancy@matrix fancy]$ export CLASSPATH=/usr/local/jdk/jre/lib/rt.jar:. // 設(shè)置 CLASSPATH,注意最后的“.”
[fancy@matrix fancy]$ cd ~/java // 轉(zhuǎn)到 /home/fancy/java
[fancy@matrix java]$ pwd // 顯示當(dāng)前目錄
/home/fancy/java // 當(dāng)前目錄是 /home/fancy/java
[fancy@matrix java]$ java HelloJava // 運行 HelloJava
Hello, Java // 運行結(jié)果
[fancy@matrix java]$ _
該例將在 1.3.3 節(jié)中分析
***** 實例分析
1.3.1 節(jié)和 1.3.2 節(jié)中的用到的實際上是一樣的例子,只是操作系統(tǒng)不同,略有差別。
兩個例子都提到一個“可運行的類”,它是指包含了 public static void main(String[] args) 方法的類,這將在下一章 HelloJava 一節(jié)中詳述。例中的 CLASSPATH 均未包含 HelloJava.class 所在的目錄(C:java, /home/fancy/java),但是均包含了當(dāng)前目錄 (.)。因此轉(zhuǎn)到包含 HelloJava.class 的目錄下去執(zhí)行 java HelloJava,在 Java 尋找到 CLASSPATH 中的“. (當(dāng)前目錄,C:java, /home/fancy/java)”時,找到了 HelloJava.class,運行成功。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。