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

har*_*han 3 java intellij-idea system-properties

$java -version
Run Code Online (Sandbox Code Playgroud)

打印如下

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)
Run Code Online (Sandbox Code Playgroud)

我感兴趣的信息是完整的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.

fla*_*nze 6

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

java.runtime.version
Run Code Online (Sandbox Code Playgroud)

这是一个例子:

public class Test {

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

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

1.8.0_92-B14

如果您之前只需要该部件-,请使用以下系统属性:

java.version
Run Code Online (Sandbox Code Playgroud)

这将输出:

1.8.0_92