【问题标题】:How to get java version programmatically with update information如何使用更新信息以编程方式获取 java 版本
【发布时间】:2023-03-10 16:20:01
【问题描述】:
$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:当我使用javac 手动编译代码然后在终端上使用java 运行它时,我发现java.version 打印了1.8.0_40。但是,当我通过 IntelliJ 运行它时,它只打印 1.8.0。

【问题讨论】:

  • 这可能很愚蠢,但您确定您正在检查的 Java 版本有任何更新要显示吗?
  • @m.antkowicz 是的,请看我的第二次编辑:)

标签: java intellij-idea system-properties


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    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 位服务器虚拟机

    =======

    更多命令见附图

    【讨论】:

      猜你喜欢
      • 2015-10-29
      • 1970-01-01
      • 1970-01-01
      • 2010-09-08
      • 2011-09-11
      • 2010-10-02
      • 2021-08-20
      • 1970-01-01
      • 2016-09-16
      相关资源
      最近更新 更多