【发布时间】:2021-11-12 15:00:43
【问题描述】:
我正在运行一个程序,使用:
System.out.println("Java Virtual Machine implementation version : " +
System.getProperty("java.vm.version"));
System.out.println("Java runtime version: " +
System.getProperty("java.runtime.version" ));
这是使用 java 11.0.12+7 编译的。我正在使用 JDK oracle64-1.8.0.192 运行它:
PWRMacbookPro:~ username$ java -version
java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)
PWRMacbookPro:~ username$
首先我希望程序使用更高版本编译...但是相反,我得到:
Java Virtual Machine implementation version : 11.0.12+7
Java runtime version: 11.0.12+7
我的 java 环境一定搞砸了?我正在运行 mac os x 并使用 jenv 在不同版本的 java 之间切换。这一切在安装 Azul 11.0.12+7 之前都有效。我卸载了 Azul 并返回到 AdoptOpenJDK 11.0.12+7。我搞砸了什么?
编辑:
现在,我很困惑。我回到安装 Azul 之前,一切都一样。我有一个用 java 11 编译的 jar。我现在将正在运行的 JVM 切换到 1.8 并执行我的 jar。我期望并认为我过去得到过“jar 是使用更高版本的 JDK 编译的”或类似的消息。我没有,它运行完美。我错过了什么?
【问题讨论】:
-
我不确定在安装 Azul 之前您认为发生了什么……但系统属性“java.version”等告诉 JVM,即“运行时” “ 版本。如果您使用 Java 8 JRE 运行......它将报告“1.8”。没有系统属性可以读取您的 app 编译针对的 java 版本,也没有任何方法可以确定版本,除了逐个类。以下是确定类的 Java 版本的方法:fabianlee.org/2018/01/19/…
-
我正在尝试确定我正在运行的 JVM 的版本。在这种情况下,1.8 带有一个在 11 下编译的模块(应该不起作用)。
-
您根本没有像您声称的那样运行 Java 8。您没有显示用于运行程序的命令行。