windows下配置JDK環境變數:
1.安裝JDK,安裝過程中可以自訂安裝目錄等資訊,例如我們選擇安裝目錄為D:/java/jdk1.5.0_08;
2.安裝完成後,右擊“我的電腦”,點擊“屬性”;
3.選擇“進階”選項卡,點擊“環境變數”;
4.在“系統變數”中,設定3項屬性,JAVA_HOME,PATH,CLASSPATH(大小寫無所謂),若已存在則點擊“編輯”,不存在則點擊“建立”;
5.JAVA_HOME指明JDK安裝路徑,就是剛才安裝時所選擇的路徑D:/java/jdk1.5.0_08,此路徑下包括lib,bin,jre等檔案夾(此變數最好設定,因為以後運行tomcat,eclipse等都需要依*此變數);
Path使得系統可以在任何路徑下識別java命令,設為:
%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin
CLASSPATH為java載入類(class or lib)路徑,只有類在classpath中,java命令才能識別,設為:
.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar (要加.表示當前路徑)
%JAVA_HOME%就是引用前面指定的JAVA_HOME;
6.“開始”->;“運行”,鍵入“cmd”;
7.鍵入命令“java -version”,“java”,“javac”幾個命令,出現畫面,說明環境變數配置成功;
8.好了,打完收工。下面開始你的第一個java程式吧。
linux下jdk環境變數的配置:
Linux 下使用“變數名=變數值”設定變數,並使用 export 命令將其匯出為環境變數。為了使每一次登入都自動化佈建好這些變數,你需要在 ~/.bash_profile 裡或者 ~./bashrc 裡進行設定,如
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/jre/lib/rt.jar:.
設定 PATH 時用的 $JAVA_HOME 是指替換變數 JAVA_HOME 的值到 $JAVA_HOME 所在位置。如上句實際就是 export PATH=/usr/local/jdk/bin:$PATH。這句中 $PATH 也是同樣的作用,不過這裡的 PATH 是指以前設定的 PATH 變數的值,而非本次設定 PATH 變數的值。
注意,在 CLASSPATH 中包含了一個“目前的目錄 (.)”。包含了該目錄後,就可以到任意目錄下去執行需要用到該目錄下某個類的 Java 程式,即使該路徑並未包含在 CLASSPATH 中也可以。原因很簡單:雖然沒有明確的把該路徑包含在 CLASSPATH 中,但 CLASSPATH 中的 “.” 在此時就代表了該路徑,例如
假設在 /home/fancy/java 目錄下有可啟動並執行類 HelloJava.class,那麼
[fancy@matrix fancy]$ export CLASSPATH=/usr/local/jdk/jre/lib/rt.jar:. // 設定 CLASSPATH,注意最後的“.”
[fancy@matrix fancy]$ cd ~/java // 轉到 /home/fancy/java
[fancy@matrix java]$ pwd // 顯示目前的目錄
/home/fancy/java // 目前的目錄是 /home/fancy/java
[fancy@matrix java]$ java HelloJava // 運行 HelloJava
Hello, Java // 運行結果
各個環境變數的含義:
JAVA_HOME:該環境變數的值就是 Java 所在的目錄,一些 Java 版的軟體和一些 Java 的工具需要用到該變數,設定 PATH 和 CLASSPATH 的時候,也可以使用該變數以方便設定。
PATH:指定一個路徑列表,用於搜尋可執行檔的。執行一個可執行檔時,如果該檔案不能在當前路徑下找到,則依次尋找 PATH 中的每一個路徑,直至找到。或者找完 PATH 中的路徑也不能找到,則報錯。Java 的編譯命令 (javac),執行命令 (java) 和一些工具命令 (javadoc, jdb 等) 都在其安裝路徑下的 bin 目錄中。因此我們應該將該路徑添加到 PATH 變數中。
CLASSPATH:也指定一個路徑列表,是用於搜尋 Java 編譯或者運行時需要用到的類。在 CLASSPATH 列表中除了可以包含路徑外,還可以包含 .jar 檔案。Java 尋找類時會把這個 .jar 檔案當作一個目錄來進行尋找。通常,我們需要把 JDK 安裝路徑下的 jre/lib/rt.jar (Linux: jre/lib/rt.jar) 包含在 CLASSPATH 中。
ant環境變數的配置:
ANT_HOME=D:/apache-ant-1.7.0
ANT_PATH=%PATH%;D:/apache-ant-1.7.0/bin
前一個%PATH%表示對以前(jdk)環境變數的引用。
安裝不同版本的jdk:
我的機器上最開始安裝的是jdk1.6,後來因為工作需要又安裝了jdk1.4。但是,環境變數我並未更改,還是指向jdk1.6的路徑的。可是,在cmd視窗輸入 java -version 卻得到是1.4.2。
查詢環境變數:
1.我的電腦->屬性->進階->環境變數
2. 系統內容變數(HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Environment)
目前使用者環境變數(HKEY_CURRENT_USER/Environment)
2個設定完全是一樣,都是指向1.6。
為了搞清楚問題的原因,通過查詢相關的資料,原來是這樣的:
JDK在安裝的過程當中將在註冊表會產生如下3個項目:
HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Development Kit
HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Plug-in
HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment
同 時,JDK安裝程式將會把java.exe,javaw.exe,javareg.exe這3個可執行檔拷貝到%SystemRoot%/system32目錄下,由於%SystemRoot%/system32被作業系統預設的設定為最高優先權的PATH搜尋 路徑,因此可保證使用者在命令列任何目錄下可運行java.exe來啟動JVM。
查詢HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment得知CurrentVersion=1.4。 於是我手動將它修改為1.6後,然後運行java -version得到以下結果:
Registry key 'Software/JavaSoft/Java Runtime Environment/
has value '1.6', but '1.4' is required.
Error: could not find java.dll
Error: could not find Java 2 Runtime Environment.
所以,不能簡單的修改註冊表的CurrentVersion值來達到更改啟動並執行JRE。若人為的修改CurrentVersion,會使得不同版本的java.exe載入與己版本不符的java.dll及 jvm.dll,將引起難以預料的後果!
一 般地,當在系統中裝了兩套或多套版本的Java2 SDK,後面安裝的Java2 SDK會將自己帶的java.exe和javaw.exe拷貝到%SystemRoot%/system32目錄下,從而覆蓋先前版本的java.exe 和 javaw.exe,並且在註冊表中改寫CurrentVersion為後安裝的版本。所以建議在安裝Java2 SDK前,先卸載以前安裝的版本。
以下是在我在系統中安裝多個版本JDK的體驗:
1、安裝JDK1.5以上版本:這可以保證任何版本的ECLIPSE都可以安裝(否則如果安裝JDK為1.3而ECLIPSE為高版本的會提示JDK版本低,安裝不了;有的如果先安裝了高版本的JDK,但一段時間後卸載了高版本的JDK,那麼電腦上只有低版本的JDK和高版本的ECLIPSE,則運行ECLIPSE時只會看到起動介面,而後消失)。
2、安裝ECLIPSE,在安裝了高版本的JDK後,一般ECLIPSE安裝沒有問題
3、視情況而定,看你要啟動並執行程式是哪個JDK的(有的程式是之前開發的使用的JDK版本可能是1.3的),如我現在要運行JDK1.3下的程式,我會
(1)從別的電腦上拷貝已安裝好的JDK1.3檔案夾
(2)將PATH,CLASSPATH指該檔案夾目錄
(3)ECLIPSE/WINDOW/PREFERENCES/JAVA/INSTALLED JRES/在裡面添加並勾選JDK1.3,並勾除JDK1.5的。
(4)將ECLIPSE/WINDOW/PREFERENCES/JAVA/COMPILER中的compliance設為1.3的版本即可。(如果選1.5可能會在命令環境編譯正確,但eclipse報錯:說java.lang.UnsupportedClassVersionError could
not found main class),還有可能出錯的就是在eclipse下預設包時編譯正錯,但使用自己建立的包時編譯其中的類失敗。
相關問題可以見:
http://www.blogjava.net/zhyiwww/archive/2007/01/16/94235.html
http://blog.csdn.net/ybyb14/archive/2007/05/09/1602230.aspx