2 回答
TA贡献1875条经验 获得超5个赞
在 Java 8 中,最低目标是 JDK 1.1。在 Java 9 中,最低目标是增加 JDK 1.6 (Java 6)。
您正在尝试使您的代码与尽可能多的 Java 版本兼容,这是一件好事,但由于 Java 6 自 2015 年以来已经停止服务,因此实际上没有人应该尝试编写与 Java 5 或更早版本一起运行的新代码。
编辑:此外,在 Java 9 中,他们在 Javac 中引入了该标志,这是替代and now--release
的首选选项。基本上是一样的东西,但它还有一个额外的好处,就是将你的引导类路径与目标版本一起设置,这是一个巨大的便利。实际上,这可以防止您在编译器中进行设置,但会意外使用 Java 7 或更高版本的一些新类或语言特性。-source
-target
--release 6
-source 1.6 -target 1.6
--release 6
TA贡献1827条经验 获得超7个赞
javac -target 1.1
(并且不使用后来添加的任何类或方法)将使其在 JDK >=1.0.2(1995-09-16 发布)上工作。回溯更多是不可行的,因为早期的 JDK 不公开可供尝试。
标志值影响 .class 文件中存储的javac -target ...
次要(字节偏移 4 和 5)和主要(字节偏移 6 和 7)版本号:
javac -target 1.1
在 JDK 1.8 中生成版本 45.3,受 JDK 1.0.2(1995-09-16 发布)、JDK 1.1.*(1997-02 发布)、JDK >=1.2(1998-12 发布)支持。[来源]javac
在 JDK 1.0.2(从jdk-1_0_2-win32-x86.exe
,wine
在 Linux 上运行)生成版本 45.3。对于 k ≥ 2,JDK 版本 1.k 支持 45.0 到 (44+k).0 范围内的类文件格式版本(含)。[来源]
javac -target 1.2
生成版本 46.0,受 JDK >=1.2 支持。javac -target 1.3
生成版本 47.0,受 JDK >=1.3 支持。javac -target 1.4
生成版本 48.0,受 JDK >=1.4 支持。
添加回答
举报