安裝JDK后,java目錄下有jdk和jre兩個目錄,但jdk下還有一個jre目錄,而且這個jre比前面那個jre在bin目錄下少了個server文件夾(Server端的Java虛擬機)!前一個jre俗稱通用jre,后一個俗稱內置jre。如下圖所示:

兩個jre大體相同,有細微的差別。
JDK里面有很多用Java所編寫的開發工具(如javac.exe、jar.exe等),而且都放置在 /lib/tools.jar 里面,它們本身運行的時候必須自行附一套JRE才行;所以開發人員需要 java 開發環境,安裝jdk時,內置jre在JDK安裝過程中會自動安裝。
通用JRE則是用來執行我們自己編寫的JAVA程序;所以普通用戶裝通用jre即可。
注意:因為編譯時,系統找的是jdk下的jre,而不是最外層的jre。這意味著外層jre不能用于調試,否則會報錯,例如在eclipse中會提示Unknown Source
再說三個lib

JDK下的lib包括java開發環境的jar包,是給JDK用的,例如JDK下有一些工具,可能要用該目錄中的文件。例如,編譯器等。JRE下的lib只是運行java程序的jar包,是為JVM運行時候用的。包括所有的標準類庫,和擴展類。JDK下的JRE下的lib是開發環境中,運行時需要的jar包。最典型的就是導入的外部驅動jar包。因為編譯時,系統找的是jdk下的jre。而不是最外層的jre。
最后我在這里補充幾點: 1. 在使用Eclipse的時候不需要指定的CLASSPATH,Eclipse會自己搜索. 2. 獨立目錄下的jre是通用jre,安裝時是可選的(選擇了,則會覆蓋已有版本)。jdk目錄下的jre則是必須的。如果你在eclipse里指定jdk的路徑(jre的路徑不用你指定,會自己去找的,用的就是這個內置jre。而java, web, start等,用的則是通用jre。
更詳細深入分析請參考文章:http://blog.sina.com.cn/s/blog_9ba71d0b01014bux.html
新聞熱點
疑難解答