java - Eclipse 使用哪种 Java 编译器?

标签 java eclipse

我已在文件夹 Java\jdk1.8.0_152 中安装了自己的 JDK 8。 Eclipse 允许我们从 Window/Preferences/Java/Compiler 指定 Java 编译器。如果我指定编译器版本 1.8(见下文),Eclipse 实际使用哪个编译器,我自己安装的位于 Java\jdk1.8.0_152 的 JDK 还是 Eclipse 自己捆绑的 JDK?这两个编译器有什么区别?

enter image description here

如有错误,请指正。我的第二个问题是,当我们为Eclipse指定安装的JRE(Window/Preferences/Java/installed JREs)时,我们必须指定我们自己安装的JRE,因为Eclipse不包含任何JRE。我说得对吗?

注意,这个问题不是偏离主题,因为它不要求推荐或查找书籍、工具、软件库、教程或其他场外资源,而是特定编译器设置的含义。它是否切换编译器,是否将设置委托(delegate)给 JDK 编译器(以便可以在那里找到含义)或者是否有其他含义?要在两台不同的计算机上生成相同的字节码,您需要知道这一点。

最佳答案

Eclipse 有自己的 Java 编译器,称为 [JDT Core][1] (org.eclipse.jdt.core)。编译器本身包含在 org.eclipse.jdt.core 插件中。 Eclipse 不会使用任何用户安装的 JDK。相反,它使用自己的 JDT 核心来编译 Java 程序,主要原因如下:

主要原因是JDT核心具有增量编译的能力,这意味着它会增量编译你代码中的变化(这也是Eclipse不需要编译按钮的原因,因为它会自动编译)当检测到变化时)。但是Oracle的JDK不支持增量编译。

Eclipse 的 JDT 核心编译器包含 JRE 吗?

  • 没有。 JDT 核心与 JDK 不同。 JDT核心是一个不包含JRE的编译器(而JDK包含JRE)。这就是为什么我们必须指定已安装的 JRE 才能启动 Eclipse。

总而言之,Eclipse 使用自己的 JDT 核心作为 Java 编译器。 JDT核心编译器没有JRE。因此 Eclipse 需要用户安装 JRE 才能运行 .class 代码。

引用文献:

[1] JDT 插件开发人员指南,http://help.eclipse.org/kepler/index.jsp?topic=%2Forg.eclipse.jdt.doc.isv%2Fguide%2Fjdt_api_compile.htm

[2] JDT 核心组件,https://www.eclipse.org/jdt/core/

[3] Eclipse 如何仅使用 JRE 编译类? How does Eclipse compile classes with only a JRE?

关于java - Eclipse 使用哪种 Java 编译器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47623117/

相关文章:

java - 如何放大面板以及java gui用什么?

Java - 如何从 HashMap 中删除重复的条目?

java - 具有来自继承的抽象类的值的构造函数,该抽象类实现了一个接口(interface)

java - 找不到符号方法追加(字符串)

java - 有没有办法同时对项目的所有文件执行 'Save Actions' ?

java - Java 中的通用 "filter"

eclipse - 如何让eclipse自动在运算符和操作数之间添加空格?

java - 如何测量每个输入文件的 Xtend 翻译时间

java - guava-11.0.1.jar 和 eclipse 的 Maven 插件

java - 如何在 Eclipse 代码模板中获取 Maven pom.xml 版本?