1. 程式人生 > >JAVA_HOME should point to a JDK not a JRE

JAVA_HOME should point to a JDK not a JRE

或者是tomcat一閃而過

最近在用jprofiler,啟動會話時,總是提示標題的錯誤,看了幾遍JAVA_HOME沒有配錯,但是還是報這個錯,最終發現是在C:/jdk1.6後加了分號的原因,去掉分號就可以了

首先介紹一下環境變數的設定方法:

(這裡以jdk1.6來安裝,其他版本一樣)
在把jdk安裝到計算機中之後,我們來進行設定使java環境能夠使用。

         首先右鍵點我的電腦。開啟屬性。然後選擇“高階”裡面的“環境變數”,在新的開啟介面中的系統變數需要設定三個屬性“JAVA_HOME”、“path”、“classpath”,其中在沒安裝過jdk的環境下。path屬性是本來存在的。而JAVA_HOME和classpath是不存在的。 
        點“新建”,然後在變數名寫上JAVA_HOME,顧名其意該變數的含義就是java的安裝路徑,呵呵,然後在變數值寫入剛才安裝的路徑“C:/jdk1.6”。(注: 如果安裝的路徑不是磁碟C或者不是在jdk1.6這個資料夾,可對應修改。以下文字都是假定安裝在C:/jdk1.6裡面。)
        其次在系統變數裡面找到path,然後點編輯,path變數的含義就是系統在任何路徑下都可以識別java命令,則變數值為“.;%JAVA_HOME%/bin”,(其中“%JAVA_HOME%”的意思為剛才設定JAVA_HOME的值),也可以直接寫上“C:/jdk1.6/bin” 
最後再點“新建”,然後在變數名上寫classpath,該變數的含義是為java載入類(class or lib)路徑,只有類在classpath中,java命令才能識別。其值為“.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/toos.jar (要加.表示當前路徑)”,與相同“%JAVA_HOME%有相同意思” 
          以上三個變數設定完畢,則按“確定”直至屬性視窗消失,下來是驗證看看安裝是否成功。先開啟“開始”->“執行”,打入“cmd”,進入dos系統介面。然後打“java -version”,如果安裝成功。系統會顯示java version jdk"1.6.0"。 
確保安裝在C盤檔名為jdk1.6,環境變數直接複製就可以了 ,在dos介面中輸入javac來檢視該命令是否合法,同樣輸入java來檢視該命令是否合法

          這樣環境變數就設定好了,下面進行對PATH,CLASSPTH,JAVA_HOME的講解

以下為置JAVA_HOME,CLASSPATH,PATH的目的: 
1,設定JAVA_HOME: 
    一、為了方便引用,比如,你JDK安裝在C:/Program Files/Java/jdk1.6.0目錄裡,則設定JAVA_HOME為該目錄路徑, 那麼以後你要使用這個路徑的時候, 只需輸入%JAVA_HOME%即可, 避免每次引用都輸入很長的路徑串; 
    二、歸一原則, 當你JDK路徑被迫改變的時候, 你僅需更改JAVA_HOME的變數值即可, 否則,你就要更改任何用絕對路徑引用JDK目錄的文件, 要是萬一你沒有改全, 某個程式找不到JDK, 後果是可想而知的----系統崩潰! 
    三、第三方軟體會引用約定好的JAVA_HOME變數, 不然, 你將不能正常使用該軟體, 以後用JAVA久了就會知道, 要是某個軟體不能正常使用, 不妨想想是不是這個問題. 

2,設定CLASSPATH: 
      這是一個很有趣,當然也比較折磨初學者的問題, 這個變數設定的目的是為了程式能找到相應的".class"檔案, 不妨舉個例子: 你編譯一個JAVA程式---A.java, 會得到一個A.class的類檔案,你在當前目錄下執行java A, 將會得到相應的結果(前提是你已經設定

CLASSPATH為"."). 現在, 你把A.class移到別的目錄下(例如:"e:/"), 執行java A, 將會有NoClassDefFindError的異常,原因就是找不到.class檔案, 現在你把CLASSPATH增加為:".;e:/"再執行java A, 看看會有什麼結果~~:)~~~, 一切正常, java命令通過CLASSPATH找到了.class檔案! 

3,設定PATH: 
      道理很簡單, 你想在任何時候都使用%JAVA_HOME%/bin/java 等來執行java命令嗎, 當然不會, 於是, 你可以選擇把 %JAVA_HOME%/bin新增到PATH路徑下, 這樣, 我們在任何路徑下就可以僅用java來執行命令了.(當你在命令提示符視窗輸入你個程式碼時,作業系統會在當前目錄和PATH變數目錄裡查詢相應的應用程式, 並且執行.)

======================

錯誤案例

NoClassDefFound:  
  當 Java 虛擬機器或 ClassLoader 例項試圖在類的定義中載入(作為通常方法呼叫的一部分或者作為使用new 表示式建立的新例項的一部分),但無法找到該類的定義時,丟擲此異常。 

問題出在你環境變數設定錯誤: 
上述樓主把C:/Program Files/Java/jdk1.5.0_11/lib/dt.jar;C:/Program Files/Java/jdk1.5.0_11/jre/lib/rt.jar放在classpath的環境變數中是正確的