首页 > 解决方案 > 属性 java.runtime.version 和 java.version 有什么区别

问题描述

出于日志记录的目的,我在 Java 程序运行时将 Java 版本写入日志。

我发现我可以得到这个版本

System.getProperty("java.runtime.version") -> 1.8.0_202-b08

System.getProperty("java.version") -> 1.8.0_202

结果显然缺少其他中的“构建”信息,但除了结果之外还有其他区别吗?在某些情况下我应该使用第一个选项而不是第二个选项?

标签: javasystem-properties

解决方案


System Property Name | System Property Content  | Where Displayed in java version Output
---------------------|--------------------------|---------------------------------------
java.version         | product version          | Line one displays the product version
---------------------|--------------------------|---------------------------------------
java.runtime.version | product version          | Line one displays the product version
                     | product build identifier | Line two displays the build identifier

J2SE SDK/JRE 版本字符串命名约定文档:

  • 系统属性的内容java.runtime.version可以扩展(超出 java.version 系统属性的内容)以包含构建 ID。

因此,属性值似乎可以等于java.runtime内容或通过构建 id来区分,正如问题中已经指出的那样。

无论如何,正如先前在对该问题的评论中所述,该java.runtime.version属性不会出现在当前记录的系统属性中。


推荐阅读