针对不同版本的 JRE

2022-09-04 21:42:18

我正在Windows Surface Pro上测试Java。Surface Pro具有Java 7 Update 55,但没有安装JDK。

我使用命令行在MacBook上编译了一个程序。MacBook具有Java 8 Update 5,它包括JDK(显然是因为我在MBP上编译)。javac

当我将程序从MackBook移动到Surface Pro时,我收到以下错误。在这里,“移动程序”意味着将两个文件复制到新机器并尝试执行字节码。*.class

java.lang.UnsupportedClassVersionError: HttpsTest : Unsupported major.minor version 52.

尝试使用目标信息进行编译会导致:

$ javac -target 1.7 HttpsTest.java SSLSocketFactoryEx.java
javac: target release 1.7 conflicts with default source release 1.8

javac -help不列出任何选项来控制已编译程序的版本信息(除了 ,它似乎不起作用)。target

如何编译 JRE 的下层版本的源文件?在本例中,我从 Java 8 机器面向 Java 7。


答案 1

在命令行中,将调用更改为:

javac -source 1.7 -target 1.7 HttpsTest.java SSLSocketFactoryEx.java

javac(JDK 8)的文档在这里

javac(JDK 9)的文档在这里

注意:在 JDK 9 中,-target 将替换为 --release。


答案 2

如果您使用的是 eclipse,则可以在项目属性> Java 编译器中设置编译器一致性级别。因此,您的代码将针对所选的 Java 版本进行编译。请参阅此处:

enter image description here


推荐