是否可以使用可以在Java 6 JVM上运行的Java 7 SDK编译类文件?
由于公共Java 6 SE JRE越来越接近它的EOL(12年11月),我正在考虑将我的项目从Java 6移植到Java 7。如果苹果愿意为Mac OS X提供Java 7 JRE,这没什么大不了的。但是由于苹果不愿意这样做,我仍然必须支持只有Java 6 JRE的用户。
有没有办法使用Java 7 javac编译Java 6兼容的二进制文件(类文件)?当然,我知道我不能使用新的Java 7功能。
谢谢!
由于公共Java 6 SE JRE越来越接近它的EOL(12年11月),我正在考虑将我的项目从Java 6移植到Java 7。如果苹果愿意为Mac OS X提供Java 7 JRE,这没什么大不了的。但是由于苹果不愿意这样做,我仍然必须支持只有Java 6 JRE的用户。
有没有办法使用Java 7 javac编译Java 6兼容的二进制文件(类文件)?当然,我知道我不能使用新的Java 7功能。
谢谢!
这要视情况而定。如果您的程序不使用新的 Java 7 语言扩展,则可以使用 and 选项运行 Java 编译器。但是,如果您使用Java 7语言扩展,则会导致编译错误。-source 1.6
-target 1.6
-source 1.6
当然,我知道我不能使用新的Java 7功能。
这包括Java 7语言功能...和 Java 7 上的依赖项对标准类库 API 的更改。另请注意,存在少量行为差异(也称为 API 错误修复),这可能会导致代码在 Java 6 和 Java 7 上以不同的方式运行。它们应该在 Java 6 到 Java 7 的转换文档中进行描述。
更新 - 无论如何,这可能不再是您的问题,因为Oracle已经发布了适用于Mac OSX的Java 7。
我已经安装了jdk6。如果你检查javac的手册页:
Cross-Compilation Options
By default, classes are compiled against the bootstrap and extension classes of the platform that javac shipped with. But javac also supports cross-compil‐
ing, where classes are compiled against a bootstrap and extension classes of a different Java platform implementation. It is important to use -bootclasspath
and -extdirs when cross-compiling; see Cross-Compilation Example below.
-target version
Generate class files that target a specified version of the VM. Class files will run on the specified target and on later versions, but not on earlier
versions of the VM. Valid targets are 1.1 1.2 1.3 1.4 1.5 (also 5) and 1.6 (also 6).