eclipse中新建Java工程的三個JRE選項區別
本文的主角就是這個十分令人糾結地方,至少令我這個初學者十分糾結…
先來看看官方的解釋(連結)
Use default JRE:
When selected, the New Java Project Wizard creates a new Java project which uses the workspace default JRE. The default JRE can be configured on the Java > Installed JREs preference page.
The project will also use the default compiler compliance which can be configured on the
Java > Compiler preference page.Click on Configure default... to configure the default JRE and compiler compliance.
Use project specific JRE:
When selected, you can explicitly specify the JRE to be used for the new Java project. The new project will use a compiler compliance which matches the version of the selected JRE.
Use an execution environment JRE:
When selected, you can specify an execution environment to be used for the new Java project. The new project will use a compiler compliance which fits best the selected execution environment.
其實官方的解釋客觀來講應該是解釋清楚了的,但是他在解釋的同時,又帶出了其餘的陌生概念,就是這個compiler compliance。
首先,設定他的地方在這裡 Java > Compiler
可以看到,設定他的引數描述是 Compiler compliance level,直譯是“編譯器服從的等級”。其後的下拉選單可以選擇JDK的版本。其實,這個引數是設定你的class的執行等級,即你的程式是以哪種版本的JDK進行編譯,所以得到的class至少要在這個版本的JRE上執行才行。
舉個例子:
比如你的JDK版本是1.7,預設情況下你的Compiler compliance level應該是1.7,因為JRE本來就是為對應版本的JDK開發的程式所服務的。新的JDK提供了更多的功能,而這些功能都要有對應的JRE(至少是對應的JRE)來提供執行環境。所以你的JDK的版本要大於等於Compiler compliance level的版本才行。
之所以提供了這個引數選項,是考慮到將當前編寫的程式放到低版本的JRE環境中執行的這種狀況。同時,為了能夠順利保證可以在低版本的JRE上執行,你要時刻保證不能使用高版本的JDK中提供的API,道理顯而易見。
最後,你必須安裝對應的低版本的JRE來執行這個經過降級編譯的程式,否則他提示你安裝對應版本的JRE。如圖。
compiler compliance介紹完了,下面就來說說建工程時這三個JRE選項具體要怎麼對待。
1.先說Use default JRE:
你會注意到,我解釋compiler compliance時的最後那張圖上,有一個Configure…跳轉。
他會跳轉到這裡 Java > Installed JREs
在這裡,你可以配置你電腦中的JRE,只要你想,從1.1到1.7,當然現在最新有1.8,所有版本的JRE你都可以安裝,並通過旁邊的Add按鈕新增到這裡。注意這裡是JRE,之所以Name中有JDK,是因為這個JRE是JDK附帶的,不是獨立安裝的。JRE可以隨便你裝多少,但JDK一個就夠了。
每個JRE前面都有一個複選框,雖說是複選框,但只能有一個被選中,而被選中的就會作為預設JRE。
所以,Use default JRE的作用,就是在你建立工程時,如果選中,就將這個預設JRE作為你構建用的JRE。就像我最開始的那張圖上一樣,並給出了提示“currently 'jdk1.7.0_71'”。
2.然後是Use project specific JRE:
其實這個選項跟Use default JRE是互補的。之前說道,你可以安裝很多版本的JRE,選擇Use default JRE就會指定預設JRE為你構建用的JRE,但如果你想選擇其它你所安裝的JRE的話,就可以選中這個Use project specific JRE,在其後的下拉選單中,你就可以選擇你想使用的JRE。
同時,compiler compliance也會被設定為對應JRE版本的編譯級別。
3.最後是Use an execution environment JRE:
這個選項是最令人糾結的。你點開其後的下拉選單,會看到這樣一幕。
它提供了eclipse支援的所有執行環境選項(只是選項而已)。
按照官方的解釋,選中該選項,你的compiler compliance將會被設定為對應你所選的JRE版本。
比如,我電腦上只有JRE1.7,如果我選中Use an execution environment JRE,並選擇了“JavaSE-1.6”,那麼就會有這樣的提示。
即是說,預設的compiler compliance編譯級別為1.7,即我的JDK的JRE版本,新的工程將會被指定為1.6的編譯級別。
這樣看起來好像跟我之前講的自定義compiler compliance如出一轍,而且好像解決了那個需要對應低版本的JRE的警告問題。
但是,當你建立完工程,會看到Problems視圖裡有一個警告。
嗯,沒錯,你仍然需要安裝對應版本的JRE才行。
不過,你寫個“Hello World!”還是可以執行的。但是最Perfect match的選擇是裝一個對應版本的JRE,這裡的Perfect match,出自這裡。
這裡就是設定那一堆JRE選項的相容JRE。如果你安裝了多個版本的JRE,在右邊的Compatible JREs列表裡,會列出左邊Execution Environment對應的相容JRE。
我裝過1.7和1.8版本的JDK,自然有對應版本的JRE,高版本相容低版本,所以所有的列表中都有這兩個選項。但對於JavaSE-1.7來說,最Perfect match的當然是對應自己版本的JRE。而且他版本,除非你也安裝了對應的JRE,否則找不到那個Perfect match JRE。
同時,如果你想指定Execution Environment中某個JRE的預設相容JRE,那就在右邊的那個JRE前面勾選複選框。
所以,總結一下,就是:
1.如果電腦中只有一個版本的JRE,因為你是初學者,初級開發者,或者你的開發只需用一個版本的JRE,那麼你就選Use default JRE:就可以了。因為你的eclipse的啟動使用就是這個JRE,它會把這個JRE配置為預設的JRE,而通常情況下這個JRE就是你JDK中的JRE,一切都是這麼順理成章。
2.如果電腦中有多個版本的JRE,就可以使用Use project specific JRE:來選擇你想使用JRE。這個時候因為你的JDK和JRE的版本可能不對應了,所以compiler compliance會被調整為你所選的JRE的版本。
3.至於Use an execution environment JRE:這個選項,如果你要選的版本的JRE已經安裝了,那麼你就可以安心的選擇了。否則你一定逃不過這個警告
其實Use project specific JRE:和Use an execution environment JRE:這兩個選項都是幫助你選擇不同的JRE,前者是讓你從已有的JRE中選擇,所以你有什麼他就給你提供什麼,比較靠譜;而後者是讓你從他可以提供的JRE中選擇,他可以提供什麼,你就可以選什麼,但選完之後你有沒有對應JRE那就是另一回事了。
最後再說一點。我之前裝過1.7和1.8版本的JDK,所以有兩個版本的JRE。但問題是我用的eclipse最高支援到1.7版本的JRE,所以就算我用1.8的JRE來建立工程,他的compiler compliance也最高能調整到1.7,1.8中的新特性是用不了的。所以1.8就只能卸了,等以後用新的eclipse來支援1.8吧(網上有教程裝外掛可以支援1.8,不想折騰了:-P)。