@liayun
2016-05-29T22:56:34.000000Z
字数 4321
阅读 5370
eclipse学习
在配置eclispe的编译与运行环境时,我彻底懵逼了,最后也只能查找一些资料,果然让我发现了一篇好文——eclipse中新建Java工程的三个JRE选项区别,作者:君中之王。现摘抄如下,须知摘抄也是一种学习。
本文的主角就是这个十分令人纠结的地方,至少令我这个初学者十分纠结…
先来看看官方的解释(链接)
英文太烂,借助有道翻译为:
Java > Installed JREs
的首选项页上配置。 Java > Compiler
首选项页上的配置。 compiler compliance
(妈的,就翻译为编译器遵从吧!) 。compiler compliance
最适合选择的执行环境。 Java > Installed JREs > Execution Environments
的首选项页面中配置。 compiler compliance
。那就先把这个compiler compliance
的概念搞清楚。 Java > Compiler
: Compiler compliance level
,直译是“编译器服从(compliance
)的等级”。其后的下拉菜单可以选择JDK的版本。其实,这个参数是设置你的class的运行等级,即你的程序是以哪种版本的JDK进行编译,所以得到的class至少要在这个版本的JRE上运行才行。 Compiler compliance level
应该是1.7,因为JRE本来就是为对应版本的JDK开发的程序所服务的。新的JDK提供了更多的功能,而这些功能都要有对应的JRE(至少是对应的JRE)来提供运行环境。所以你的JDK的版本要大于等于Compiler compliance level
的版本才行。 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.6.0_45'”,如图:
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版本。
比如,我电脑上只有JDK1.6和JDK1.8,但是我的workspace的默认compiler compliance level
是1.8,如果我选中Use an execution environment JRE,并选择了“JavaSE-1.6”,那么就会有这样的提示。
即是说,当前工作区间的默认compiler compliance
编译级别为1.8,新的工程将会被指定为1.6的编译级别。
这样看起来好像跟我之前讲的自定义compiler compliance
如出一辙,而且好像解决了那个需要对应低版本的JRE的警告问题。
由于我的电脑上有JDK1.6和JDK1.8,所以你选中Use an execution environment JRE,并选择了“JavaSE-1.7”,当你建立完工程,会看到Problems视图里有一个警告。如图:
借助有道翻译为:Build path
指定执行环境JavaSE-1.7
,在工作区间没有安装严格符合这个环境的JREs。
所以,你仍然需要安装对应版本的JRE才行。但不一定非得这样做,因为你只要指定默认的JREs版本大于等于1.7就行,这既是我们前面所说的高版本的java能运行低版本的javac编译的程序。
最Perfect match(完美匹配)的选择是装一个对应版本的JRE,这里的Perfect match,出自这里:
这里就是设置那一堆JRE选项的兼容JRE。如果你安装了多个版本的JRE,在右边的Compatible JREs列表里,会列出左边Execution Environment对应的兼容JRE。
我装过1.6和1.8版本的JDK,自然有对应版本的JRE,高版本兼容低版本,所以所有的列表中都有这两个选项。但对于JavaSE-1.7来说,最Perfect match的当然是对应自己版本的JRE。而其他版本,除非你也安装了对应的JRE,否则找不到那个Perfect match
JRE。同时,如果你想指定Execution Environment中某个JRE的默认兼容JRE,那就在右边的那个JRE前面勾选复选框。
所以,总结一下,就是:
compiler compliance
会被调整为你所选的JRE的版本。