【问题标题】:What is "compiler compliance level" in Eclipse?什么是 Eclipse 中的“编译器合规级别”?
【发布时间】:2014-04-30 08:03:06
【问题描述】:

有一段时间我试图理解,但我仍然不明白 Eclipse 中项目的“编译器合规性级别”到底是什么意思。我翻遍了这个网站和谷歌,找不到我能理解的答案。

假设我希望我的程序能够在 JRE 6 上运行。

我可以这样做:Project > Preferences > Java Build Path > Libraries,并将我使用的 JRE 库设置为 JRE 6。

为什么这还不够?

我一直不明白为什么我还需要将编译器合规性设置设置为 JRE 6。

我想了解在项目中使用 JRE 6 与将项目的编译器合规性设置设置为 JRE 6 之间的区别。

编译器合规级别到底是什么意思?

【问题讨论】:

    标签: java eclipse


    【解决方案1】:

    描述“Java 编译器合规性”设置的最简单方法是,它确定哪些 Java 虚拟机指令可以在“已编译”Java 代码中使用……以及要使用哪些库类版本。 JVM(及其库)的每个版本都可能引入新指令(VM)或调整与 JVM 一起交付的类库。

    您应该将该设置设置为您希望您的产品在其上运行的最低级别的 JVM。

    【讨论】:

      【解决方案2】:

      Java 编译器可以编译将在先前版本的 JVM 上运行的代码。即使您安装了 JDK 6,您也可能正在为使用 JDK 5 的人编写代码。编译器合规性级别告诉 Eclipse 在编译您的项目时使用适当的设置,以确保您的代码可以在您指定的目标 JVM 上运行。默认情况下,如果我记得的话,Eclipse 会选择 Java 5 Compliance。如果您想使用特定于 Java 6 或 Java 7 的代码功能,则必须更改合规级别。

      【讨论】:

        【解决方案3】:

        编译器合规性设置告诉编译器假装它是不同版本的 Java。

        Java 8 编译器将生成 Java 8 版本的类文件格式的类文件,并接受 Java 8 源文件。 JRE 6 无法加载此版本,因为它是在 JRE 6 之后创建的。

        如果您将合规级别设置为“JRE 6”,它会将 Java 6 源文件编译为 Java 6 类文件。

        这就像将 Word 文档保存为“Word 97-2003 格式”一样,以便 Word 97-2003 可以读取您的文档。您将类文件保存为 Java 6 格式,以便 Java 6 可以读取它们。

        【讨论】:

        • 感谢您的评论。请确认我是否理解:编译器合规性设置告诉 Eclipse “要使用的编译器版本”。将编译器合规级别设置为 6,将生成版本 6 的编译器,并生成版本 6 格式的编译文件。因此,如果我使用的是 JDK 7,并且我希望我的程序能够在 JRE 6 上运行,那么将编译器合规级别设置为 JRE 6 将意味着编译后的 .class 文件将采用 JRE 6 可以理解的格式。这是正确的吗?
        • 好的,为什么还需要设置 Java 构建路径以使用适当的旧 JRE 库?为什么 Java 构建路径不能只包含最新的 JRE 库?我的意思是,如果我正在编写一个能够在 JRE 6 上运行的程序,那么除了 JRE 7 之外,我还需要在项目的 Java 构建路径中包含 JRE 6(对吗?)。如果是,为什么?
        • 您需要包含 JRE 6 而不是 JRE 7。否则您可能会意外使用 7 中存在但 6 中不存在的东西。
        • 嗨 immibis,您说它将 Java 6 源文件编译成 Java 6 类文件。如果我的源代码包含 Java 8 的特定功能并且我为 Java 6 编译了怎么办。代码会在 Java 6 上编译和运行吗?
        • @Dexter 否。类文件版本必须与源版本相同或更新。
        【解决方案4】:

        它告诉你你所遵循的 JDK 的版本;具体来说,您的构建目标是哪个 JRE。

        这是运行代码所需的最小 JRE

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-22
          • 2016-10-13
          • 2011-03-04
          相关资源
          最近更新 更多