參考自:https://blog.csdn.net/u014330421/article/details/78810768
1. 為什么要在使用eclipse敲代碼之前設(shè)置JDK、JRE:
eclipse是由java代碼寫的,eclipse要運(yùn)行,就要有java環(huán)境JRE,故當(dāng)我們安裝了JRE之后,就可以直接運(yùn)行eclipse,在eclipse里面敲代碼了。
2. 那么eclipse是怎么找到JRE的呢?
當(dāng)我們安裝JDK、JRE的時(shí)候,系統(tǒng)會(huì)自動(dòng)復(fù)制java.exe程序到C:\Windows\System32這個(gè)文件夾里面eclipse就是通過(guò)這個(gè)java.exe來(lái)運(yùn)行的,故eclipse自動(dòng)根據(jù)這個(gè)路徑去找到他,然后運(yùn)行。
3. 那么為什么還要設(shè)置環(huán)境變量:
除了eclipse之外,其他的應(yīng)用,比如:Maven,Ant等不會(huì)自動(dòng)去找,即不認(rèn)識(shí)上面的路徑,所以要在環(huán)境變量里面配置, 方便這些應(yīng)用程序的訪問(wèn)。
4. 在eclipse里面配置編譯時(shí)環(huán)境和運(yùn)行時(shí)環(huán)境
(一)eclipse中的JDK與JRE:
其實(shí)寫這篇文章的出發(fā)點(diǎn)就是因?yàn)樵贓clipse中用maven時(shí),被各種jre、jdk搞得混亂,于是決定弄清楚。先簡(jiǎn)單的介紹一下:
Eclipse:是一款集成開發(fā)的IDE,可以開發(fā),編譯,調(diào)試,運(yùn)行代碼等;
JDK:java開發(fā)工具,用來(lái)將.java文件編譯成字節(jié)碼文件;
JRE:java運(yùn)行時(shí)環(huán)境,執(zhí)行編譯后得字節(jié)碼文件;
Maven:一款項(xiàng)目管理工具;
Eclipse中其實(shí)內(nèi)嵌了Java編譯器,其編譯器的作用等同于jdk中的javac,所以eclipse其實(shí)只需要jre就可以編譯java文件(在eclipse中當(dāng)你保存一個(gè)java類時(shí),它就會(huì)自動(dòng)編譯這個(gè)java類,相當(dāng)于在命令行中用了javac這個(gè)命令)。但如果你在eclipse中用了maven這樣的工具,可能就無(wú)法編譯了。因?yàn)閙aven默認(rèn)使用javac來(lái)編譯項(xiàng)目的,也就是需要jdk,而如果你的eclipse中某maven項(xiàng)目只指定了jre,就會(huì)出現(xiàn)無(wú)法編譯的情況。就像是啟動(dòng)Tomcat只需要jre,原因是Tomcat中已經(jīng)包括了源代碼編譯器,不需要jdk中的javac來(lái)編譯。
(二)Eclipse中有幾處會(huì)用到j(luò)dk和jre的,下面列出幾個(gè),也是我混亂之處所在
(1)Window->preferences->Java->Installed JREs

這里Installed JREs中的可以理解為“全局常量”,這里設(shè)置好,之后新建的項(xiàng)目都默認(rèn)用這里選定的jre或者jdk,但如果項(xiàng)目中用了maven的話,前面說(shuō)了maven默認(rèn)的是jdk中的javac來(lái)編譯,所以如果這里還是用jre的話就會(huì)maven install出錯(cuò),需要選擇jdk才行。更改直接Add->Standard VM,點(diǎn)擊directory,選擇相應(yīng)的jdk或者jre路徑確定即可。
(2)給不同的項(xiàng)目選擇不同的jre
右擊項(xiàng)目名稱->build path->configure build path,選擇libraries選項(xiàng)卡,選中jre:

點(diǎn)擊edit:

可根據(jù)不同的需求選擇不同的選項(xiàng)卡,并按照提示完成操作即可。注意,當(dāng)你選擇第二個(gè)選項(xiàng)卡“替代JRE”時(shí),eclipse會(huì)跳轉(zhuǎn)至installed jre中讓你選擇,因此,需要你提前在installed jre中配置好。
(3)Window ->preferences->java->compiler

這里也會(huì)有一個(gè)jdk的選擇,就是編譯時(shí)jdk的版本,需要注意的一點(diǎn)是:
編譯時(shí)的jdk版本不能高于項(xiàng)目build path中的jdk即運(yùn)行時(shí)jdk,因?yàn)楦甙姹局械挠行┕δ茉诘桶姹局胁⒉惶峁?。例如,?xiàng)目中用了泛型,編譯時(shí)為jdk1.5但運(yùn)行時(shí)為jdk1.4,雖然編譯時(shí)不報(bào)錯(cuò),但運(yùn)行時(shí)就會(huì)出錯(cuò),因?yàn)閖dk1.4并不支持泛型;反過(guò)來(lái),編譯時(shí)為jdk1.4而運(yùn)行時(shí)為jdk1.5,雖然編譯時(shí)報(bào)錯(cuò),但卻可以正確運(yùn)行。