我在Windows Surface Pro上测试Java。 Surface Pro具有Java 7 Update 55,但 没有安装JDK。
我使用javac
从命令行在MacBook上编译了一个程序。 MacBook具有Java 8 Update 5,它包含JDK(显然是因为我在MBP上编译)。
当我将程序从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。
答案 0 :(得分:7)
答案 1 :(得分:2)
答案 2 :(得分:0)
在错误消息major.minor version 52.
中,数字 52 在此表示编译该类的java版本
例如
Java SE 9 = 53
Java SE 8 = 52
Java SE 7 = 51
Java SE 6.0 = 50
Java SE 5.0 = 49
JDK 1.4 = 48
JDK 1.3 = 47
JDK 1.2 = 46
JDK 1.1 = 45
因此,您安装的JRE版本高于目标版本
将-source
与要编译的版本号一起使用
在你的情况下:
javac -source 1.7 -target 1.7 HttpsTest.java SSLSocketFactoryEx.java