整理自:https://blog.csdn.net/wdjhzw/article/details/42086615

官方解释(链接

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.

Execution environments can be configured on the Java > Installed JREs > Execution Environments preference page.

其实官方的解释客观来讲应该是解释清楚了的,但是他在解释的同时,又带出了其余的陌生概念,就是这个compiler compliance。那就先把这个compiler compliance的概念搞清楚。

首先,设置他的地方在这里 Java > Compiler

Compiler compliance level,直译是“编译器服从的等级”。这个参数是设置你的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。如图。

下面说建工程时这三个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一个就够了。

注:JDK(Java Development Kit)为开发包,其中包含了JRE。JRE(Java Runtime Environment)为运行环境

每个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支持的所有运行环境选项(只是选项而已,还需安装对应版本的JRE)。

按照官方的解释,选中该选项,你的compiler compliance将会被设置为对应你所选的JRE版本。

比如,我电脑上只有JRE1.8,如果我选中Use an execution environment JRE,并选择了“JavaSE-1.7”,那么就会有这样的提示。

The default compiler compliance level for the current workspace is 1.8.The new project will use a project specific compiler compliance level of 1.7.

现在工作空间默认的编译级别是1.8,新项目将会使用特定的编译级别1.7。

这样看起来好像跟我之前讲的自定义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那就是另一回事了。

Eclipse中新建Java工程的三个JRE选项区别的更多相关文章

  1. Eclipse中把Java工程修改成web工程

    Eclipse中把Java工程修改成web工程 点击项目:右击:选择properties--输入project facets,将“Dynamic Web Module”打勾即可:

  2. eclipse中新建jni工程

    1.什么是NDK 网上很多不多说,全称是Android Native Developer Kit,是一个工具合集,我理解可以把c/c++打包成.so文件 这是目录结构,要用到指令ndk-build 需 ...

  3. 在eclipse中新建java问题报错:The type XXX cannot be resolved. It is indirectly referenced from required .class files

    在Eclipse中遇到The type XXX cannot be resolved. It is indirectly referenced from required .class files错误 ...

  4. Eclipse新建Java工程出现红色感叹号怎么解决?

    安装了新版本的JDK之后,在Eclipse中新建Java工程出现红色感叹号怎么解决? 其实只要在Eclipse中重新设置一下JDK路径就行了 路径:右键Java工程>>Build Path ...

  5. Eclipse中新建WEB项目,JSP页面报错。

    在Eclipse中新建java web项目,在JSP页面的第一行提示这个错误: [The superclass "javax.servlet.http.HttpServlet" w ...

  6. eclipse 中新建文件报错The superclass "javax.servlet.http.HttpServlet" was not found on the Java Buil

    在eclipse中新建文件报错错误提示如下: The superclass "javax.servlet.http.HttpServlet" was not found on th ...

  7. Java web项目搭建系列之一 Eclipse中新建Maven项目

    前提条件: 已经安装好JDK 已经安装好Maven 已经安装好Eclipse 已经安装好Maven插件 在Eclipse中新建Maven项目 [File]→[New]→[Other...] [Mave ...

  8. eclipse中新建maven项目-转

    http://huxiaoheihei.iteye.com/blog/1766986 博客分类: maven maven  maven是个项目管理工具,集各种功能于一身,下面介绍maven web项目 ...

  9. Eclipse中Maven WEB工程tomcat调试

    最近没事了玩一下maven,使用maven管理工程中的依赖包非常的方便.建立maven web工程的时候开始不知道怎么用tomcat来调试,总是使用mave的tomcat插件发布了后来调试,觉得非常的 ...

随机推荐

  1. PhoneGap原理

    http://www.oschina.net/question/213217_46380

  2. Redis持久化————AOF与RDB模式

      1.        官方说明:  By default Redis asynchronously dumps the dataset on disk. This mode is good enou ...

  3. A - Subsequence (算法 二分 )

    点击打开链接 A sequence of N positive integers (10 < N < 100 000), each of them less than or equal 1 ...

  4. python format()函数的用法

    Python format() 函数的用法 复制自博主 chunlaipiupiupiu 的博客,如有侵权,请联系删除 python中format函数用于字符串的格式化 通过关键字 1 print(' ...

  5. elasticsearch 导入基础数据并索引之 geo_point

    elasticsearch 中的地理信息存储, 有geo_point形式和geo_shape两种形式 此篇只叙述geo_point, 地理位置需要声明为特殊的类型, 不显示在mapping中定义的话, ...

  6. jdbc连接2(不可以注入)

    public void login1(String username, String password) throws ClassNotFoundException, SQLException { / ...

  7. Fiddler工具详细介绍

    百度看到Fiddler工具的详细介绍,转载收藏,侵权删,原文地址:http://blog.csdn.net/qq_21445563/article/details/51017605 前部分讲解Fidd ...

  8. POJ 1298

    #include<iostream>// chengdacaizi 注释!2008 11 05 #include<string> using namespace std; in ...

  9. linux 从0开始

    网络配置: http://blog.51yip.com/linux/1120.html 网络配置为自动获取 vi命令参考: http://c.biancheng.net/cpp/html/2735.h ...

  10. 《Android应用性能优化》3——电量、渲染

    7.延长电池续航时间 尽管应用有时看起来没做多少事,但实际上可能会很耗电,运行不了多久就会把电量榨干,使设备开机不到半天就没电了.那些被归为“电池杀手”的应用,最终的宿命就是被删除.得差评.不挣钱.因 ...