如何从程序中找到JVM版本?

jav*_*eek 108 java jvm version

我想编写一个示例Java文件,在其中我想知道运行该类的JVM版本.有办法吗?

Ale*_*exR 119

System.getProperty("java.version") 返回你需要的东西.

如果需要,您还可以使用JMX:

ManagementFactory.getRuntimeMXBean().getVmVersion()

  • 该JMX调用返回相当于"java.vm.version",而不是"java.version".这些通常(但不一定)相同. (5认同)
  • 值得注意的是Java 9将更改此字符串的返回值. (3认同)
  • ManagementFactory.getRuntimeMXBean().getSpecVersion()可能更准确. (2认同)
  • 事实上,我想说它们“不”相同。java.vm.version 是 jvm 版本号,类似于“25.0-b70”,而 java.version 是您习惯看到的普通 java 语言版本“1.8.0”。 (2认同)

And*_*son 50

这似乎java.specification.version是最好的工作.

来自我以前的一个网站上的小程序的EG:

java.specification.version  1.6
java.version    1.6.0_23
java.vm.version 19.0-b09
java.runtime.version    unknown
Run Code Online (Sandbox Code Playgroud)

unknownjava.runtime.version仅表示applet不受信任.这是受信任的版本:

java.specification.version  1.6
java.version    1.6.0_23
java.vm.version 19.0-b09
java.runtime.version    1.6.0_23-b05
Run Code Online (Sandbox Code Playgroud)

  • @User8461 也许你应该向监督开放 JDK 的人提出错误报告,说实话,我没有看到找出该值的太多意义。目前它是“25.45-b02”..这对我来说没有任何意义(没有提供任何有用的信息)。 (3认同)
  • openjdk-11-headless 中的“java.vm.version”为空 (2认同)

Sea*_*oyd 43

System.getProperty("java.version");
Run Code Online (Sandbox Code Playgroud)

以下是标准系统属性列表,包括:

  • java.version Java虚拟机规范版本
  • java -XshowSettings:all -version Java虚拟机规范供应商
  • System.getProperties() Java虚拟机规范名称
  • java.version Java虚拟机实现版本
  • java -XshowSettings:all -version Java虚拟机实现供应商
  • System.getProperties() Java虚拟机实现名称
  • java.version Java运行时环境规范版本
  • java -XshowSettings:all -version Java运行时环境规范供应商
  • System.getProperties() Java运行时环境规范名称


Fin*_*arr 12

只是一个电话的情况System.getProperty("java.version").


snr*_*snr 5

只需简单拨打电话,

System.out.println(System.getProperty("java.specification.version"));
System.out.println(System.getProperty("java.runtime.version"));
Run Code Online (Sandbox Code Playgroud)

输出示例:

9
9+176
Run Code Online (Sandbox Code Playgroud)