有一段时间我试图理解,但我仍然没有完全得到什么"编译器合规级别"对于Eclipse中的项目意味着。我查看了整个网站和谷歌,但无法找到我能理解的答案。
让我们说我希望我的程序能够在JRE 6上运行。
我能做到:项目>偏好> Java构建路径>库,并将我使用的JRE库设置为JRE 6.
为什么这还不够?
我永远不明白为什么我还需要将编译器合规性设置设置为JRE 6.
我想了解在项目中使用JRE 6与将项目的编译器合规性设置设置为JRE 6之间的区别。
编译器合规性级别究竟是什么意思?
答案 0 :(得分:43)
编译器合规性设置告诉编译器假装它是不同版本的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可以读取它们。
答案 1 :(得分:5)
它告诉你你所遵循的JDK的版本;具体而言,您使用构建定位哪个JRE。
运行代码所需的MINIMUM JRE
答案 2 :(得分:3)
描述“Java编译器合规性”设置的最简单方法是确定可以在“已编译”的Java代码中使用哪些Java虚拟机指令...以及要使用哪些库类版本。 JVM(及其库)的每个版本都可能引入新指令(VM)或调整与JVM一起提供的类库。
您应该将设置设置为您希望运行产品的最低JVM级别。
答案 3 :(得分:1)
Java编译器可以编译将在JVM的早期版本上运行的代码。即使安装了JDK 6,也可以编写针对使用JDK 5的人员的代码。编译器合规性级别告诉Eclipse在编译项目时使用适当的设置,以确保代码可以在您指定的目标JVM上运行。默认情况下,如果我记得,Eclipse选择了Java 5 Compliance。如果要使用特定于Java 6或Java 7的代码功能,则必须更改合规性级别。