设置EclipseJava编译器遵从性级别1.6是否与使用JDK1.6编译相同?

设置EclipseJava编译器遵从性级别1.6是否与使用JDK1.6编译相同?,java,eclipse,javac,Java,Eclipse,Javac,我正在尝试使用一个第三方API,在这里我获得了对JDK1.6之前的第三方API的支持 我还有其他几个项目是使用JDK1.7构建的,作为产品的一部分,我也在打包JRE1.7 如果编译器符合性级别设置为JDK1.6,那么使用JDK1.7库编译和运行会产生与使用JDK1.6编译和运行相同的结果吗 当编译器符合性级别设置为JDK1.6时,是否可以安全地向第三方供应商申请支持 更新: 我假设在eclipse中设置编译器级别与设置javac的-source和-target选项相同 我不确定使用jdk1.7将

我正在尝试使用一个第三方API,在这里我获得了对JDK1.6之前的第三方API的支持

我还有其他几个项目是使用JDK1.7构建的,作为产品的一部分,我也在打包JRE1.7

如果编译器符合性级别设置为JDK1.6,那么使用JDK1.7库编译和运行会产生与使用JDK1.6编译和运行相同的结果吗

当编译器符合性级别设置为JDK1.6时,是否可以安全地向第三方供应商申请支持

更新: 我假设在eclipse中设置编译器级别与设置javac的-source和-target选项相同


我不确定使用jdk1.7将source&target设置为6/1.6进行编译是否与在jdk1.6中进行编译相同

问题在于不同版本之间Java API的变化。有一些类和方法在Java7中可用,但在Java6中不可用,反之亦然。该代码使用Java 7编译,但由于缺少类或方法,因此不会使用Java 6运行


除非您使用Java 6 JDK进行编译,否则您无法100%确定。

是的,如果您使用设置为1.6的遵从性级别进行编译,它将能够在Java 6上运行—编译器将保证这一点。它也应该能够在java 7上运行,因为JRE是向后兼容的。

根据我对Eclipse的经验,设置为java 5的遵从性级别与使用JDK5编译不同。它允许Java 6方法在安装的Java被设置为Java 6且符合性被设置为5时通过本地编译,然后我们的构建在文件签入时失败。

您可以在“首选项->Java->编译器”(特定于项目)中实际指定.class文件版本兼容性,因此,在最坏的情况下,您会从最近的编译器构建中获益,可能与使用JDK1.6的字节码完全相同

然而,“Compliance 1.6”并不能确保获得与使用JDK1.6完全相同的结果,但java标准确保使用1.6构建的应用程序在>=1.6 JRE上运行相同的结果

因此,如果您真的担心不兼容,那么在一台同时具有JRE 1.6(对于本项目)和1.7(对于其他项目)的机器上,使用项目特定设置1.6构建项目(我想是在您的CI服务器上),并在您的发行版中捆绑1.7,Sun/oracle/java保证它可以正常运行

i、 e.如果代码是用JDK 1.6构建的,并且被其他JDK>=1.7代码使用,那么在版本控制方面就可以了。你每天使用的许多罐子可能就是这样

但是,如果您害怕现实世界中的问题(涉及资金),那么使用真正的JDK1.6构建标记为1.6的代码是唯一明智的做法

因此,我认为您可以安全地“声明支持”,在1.6中构建并在1.7中使用jar