我正在尝试使用第三方API,在这里我获得了对第三方API的支持,升级到JDK1.6。
我还有其他几个使用JDK1.7构建的项目,作为产品的一部分,我还打包了JRE1.7。
如果编译器遵从性级别设置为JDK1.6,那么使用JDK1.7库编译和运行与使用JDK1.6编译和运行的结果相同吗?
当编译器遵从级别设置为JDK1.6时,要求第三方供应商提供支持是否安全。
更新:我认为在eclipse中设置编译器级别与设置javac的-source和-target选项是相同的。
我不确定使用JDK1.7将源代码和目标设置为6/1.6是否与在jdk1.6中编译相同。
发布于 2015-07-03 15:36:25
实际上,您可以在"Preferences->Java-> compiler“(特定于项目)中指定.class文件版本兼容性,因此,最坏的情况是,您从最近的编译器构建中受益,可能与使用JDK1.6的字节码完全相同。
然而,“遵从性1.6”并不能确保您获得与使用JDK1.6完全相同的结果,但是java标准确保用1.6构建的应用程序将在>= 1.6JRE上运行。
因此,如果您真的害怕不兼容,那么在带有JRE 1.6和其他项目的机器上构建一个项目特定设置1.6的项目(我想是在您的CI服务器上),并在您的发行版中捆绑1.7,可以保证Sun/oracle/java运行ok。
也就是说,如果代码是用JDK1.6构建的,并被其他JDK >= 1.7代码使用,那么您就可以进行版本控制了。也许这就是你每天使用的很多罐子的情况。
然而,如果您害怕现实世界的问题(涉及金钱),使用真正的JDK1.6构建标记为1.6的代码是唯一明智的做法。
因此,我认为您可以安全地“声明支持”,在1.6中构建,在1.7中使用jar。
发布于 2014-12-09 16:28:31
问题在于Java在不同版本之间的变化。有些类和方法在Java 7中可用,但在Java 6和其他方面则不然。代码使用Java 7进行编译,但由于缺少类或方法,它不会在Java 6中运行。
除非您使用Java 6 JDK进行编译,否则您无法100%确定。
发布于 2014-12-09 17:40:42
是的,如果您将遵从性级别设置为1.6,则它将能够在java 6上运行-编译器将保证这一点。它也应该能够在java 7上运行,因为JRE是向后兼容的。
https://stackoverflow.com/questions/27383851
复制相似问题