eclipse 中 默認是選擇JRE的,應該修改成JDK ,以及 JDK與jRE的區別

JDK與jRE的區別

 

JDK(Java development kit):Java 開發工具,包括一系列java命令,如javac(java compiler) 等;同時jdk包含jre,由於jdk實際上是面向java開發人員的,開 發完以後還要進行調試運行等,這就須要jre了;java

JRE(java runtime environment):java 運行時環境,java文件被javac編譯事後造成字節碼文 件,這個文件計算機是不能理解和處理的,須要有jvm(java virtual machine)處理後造成機器語言在傳遞給計算機處理 (這也是爲何說java具備平臺無關性)。Jvm就存在於jre 中。可見,jre實際上是面向java程序的使用者;windows

 

因此,當你須要開發一個java程序時,你須要的是jdk,但若是須要運行一個java程序,就須要jre了。讓人迷惑的是,當你下載並安裝jdk以後,會發如今jdk文件夾內部和外部同時存在jre文件夾(證實了jdk包含jre),下面咱們來講說其中的緣由:tomcat

 

內部jre:當你開發java程序時,須要用到一些javac之類的命令,就會調用jdk(java開發  工具)內部的jre;oracle

外部jre:當你只須要運行一個java程序而不是開發時,就會調用外部的jre;eclipse

那麼爲何要分兩個呢?公用一個不就好了嗎,還節省了資源。其實分爲兩個jre,更多的是爲了提升性能和效率,打開兩個jre的文件夾,對比一下會發現:jvm

外部jre中,在其client文件夾裏面,有個jvm.dll;內部jre中,多了個server文件夾,其中也有個jvm.dll文件,主要是兩個vm的區別,使得內外部jre有不一樣的分工,而且能在各自的分工上作到最好(提升各自的效率和性能)。maven

 

附上Oracle官網的一張截圖:工具

 

http://docs.oracle.com/javase/7/docs/性能

 

從這張圖中能夠獲得:JVM⊂JRE⊂JDK開發工具

說到這裏,順便提一下windows下環境變量中的path和classpath,畢竟好記性不如爛筆頭!

安裝好jdk以後,下一步就要配置環境變量了,怎麼配置就很少說了,網上不少,簡單的說一下爲何要分這兩個來配置:

path變量:與其中的值相對應的路徑下面是一些java命令程序,如javac;

Classpath變量:與其中值相對應的路徑下面是程序須要用到的一些java提供的類(jar包);

有時也用到JAVA_HOME環境變量,它指向jdk的安裝目錄,Eclipse/tomcat等就是經過其找到並使用安裝好的jdk。配置好以後,便可在任何目錄下用java命令執行java程序。那麼爲何系統能夠在任何目錄下使用JDK提供的命令呢?

 

其實環境變量就是可以讓系統更快速方便的找到所需的東西,有興趣的能夠看一下windows系統變量中的path變量中已有的值,例如C:\Windows\system32;,按這個路徑打開,會發現裏面有不少可執行文件,好比cmd.exe,這就是爲何咱們可以在「運行」窗口輸入cmd以後就出現命令行的緣由。說到這裏,你也能夠試試利用環境變量啓動其餘程序!

eclipse中的JDK與JRE:

 

其實寫這篇文章的出發點就是由於在Eclipse中用maven時,被各類jre、jdk搞得混亂,因而決定弄清楚。先簡單的介紹一下:

Eclipse:是一款集成開發的IDE,能夠開發,編譯,調試,運行代碼等;

JDK:java開發工具,用來將.java文件編譯成字節碼文件;

JRE:java運行時環境,執行編譯後得字節碼文件;

Maven:一款項目管理工具;

 

Eclipse中其實內嵌了Java編譯器,其編譯器的做用等同於jdk中的javac,因此eclipse其實只須要jre就能夠編譯java文件(在eclipse中當你保存一個java類時,它就會自動編譯這個java類,至關於在命令行中用了javac這個命令)。但若是你在eclipse中用了maven這樣的工具,可能就沒法編譯了。由於maven默認使用javac來編譯項目的,也就是須要jdk,而若是你的eclipse中某maven項目只指定了jre,就會出現沒法編譯的狀況。就像是啓動Tomcat只須要jre,緣由是Tomcat中已經包括了源代碼編譯器,不須要jdk中的javac來編譯。

Eclipse中有幾處會用到jdk和jre的,下面列出幾個,也是我混亂之處所在:

 

A. Window->preferences->Java->Installed JREs

 

這裏Installed JREs中的能夠理解爲「全局常量」,這裏設置好,以後新建的項目都默認用這裏選定的jre或者jdk,但若是項目中用了maven的話,前面說了maven默認的是jdk中的javac來編譯,因此若是這裏仍是用jre的話就會maven install出錯,須要選擇jdk才行。更改直接Add->Standard VM,點擊directory,選擇相應的jdk或者jre路徑肯定便可。

B.給不一樣的項目選擇不一樣的jre

右擊項目名稱->build path->configure build path,選擇libraries選項卡,選中jre:

 

點擊edit:

 

可根據不一樣的需求選擇不一樣的選項卡,並按照提示完成操做便可。注意,當你選擇第二個選項卡「替代JRE」時,eclipse會跳轉至installed jre中讓你選擇,所以,須要你提早在installed jre中配置好。

C. Window ->preferences->java->compiler

 

這裏也會有一個jdk的選擇,就是編譯時jdk的版本,須要注意的一點是:

編譯時的jdk版本不能高於項目build path中的jdk即運行時jdk,由於高版本中的有些功能在低版本中並不提供。例如,項目中用了泛型,編譯時爲jdk1.5但運行時爲jdk1.4,雖然編譯時不報錯,但運行時就會出錯,由於jdk1.4並不支持泛型;反過來,編譯時爲jdk1.4而運行時爲jdk1.5,雖然編譯時報錯,但卻能夠正確運行。

 

總之就是 若是 使用 maven 的時候 請 選擇  JDK 。否則會使用 maven 命令報錯的。

Eclipse is running in a JRE ,but a  JDK is  required .... 

修改 爲 JDK 便可。同時以前的項目 若是使用 了 JRE 也 要修改成 對應的 JDK。

相關文章
相關標籤/搜索