如何使用更新信息以编程方式获取Java版本

时间:2016-04-29 09:31:24

标签: java intellij-idea system-properties

$java -version

打印如下

java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)

我感兴趣的信息是完整的java版本,System.getProperties()似乎没有这些信息。它只有_之前的版本,而不是在我的情况下更新40的信息。

编辑:当我运行测试代码System.out.println(System.getProperty("java.version");时,会打印完整版本。但我正在开发一个大型代码库,在这个代码库中我无法获得相同的结果。我检查了代码库,如果属性在某个时候以某种方式被覆盖,但无法找到任何东西。

EDIT_2:当我用java.version手动编译代码然后在终端上使用javac运行代码时,我发现java打印1.8.0_40。但是当我通过IntelliJ运行它时,它只打印1.8.0。

2 个答案:

答案 0 :(得分:5)

您可以使用此属性获取完整版本:

java.runtime.version

这是一个例子:

public class Test {

    public static void main(String[] args) {
        System.out.println(System.getProperty("java.runtime.version"));
    }
}

在我的机器上,我得到以下输出:

  

1.8.0_92-B14

如果您只想要-之前的部分,请使用以下系统属性:

java.version

这将输出:

  

1.8.0_92

答案 1 :(得分:0)

enter image description here

在下面的代码中使用这些属性

String version = System.getProperty("java.version");
        System.out.println("version : "+version);

String vendor = System.getProperty("java.vendor");
        System.out.println("java Vendor : "+vendor);

String vm = System.getProperty("java.vm.name");
        System.out.println("java vm name : "+vm);

输出:

版本:15

java 供应商:甲骨文公司

java 虚拟机名称:OpenJDK 64 位服务器虚拟机

========

更多命令见附图