出于记录目的,我将在Java程序运行时将Java版本写入日志。
我发现可以使用该版本
System.getProperty("java.runtime.version") -> 1.8.0_202-b08
和
System.getProperty("java.version") -> 1.8.0_202
结果显然缺少其他“构建”信息,但是除了结果之外还有其他区别吗?在某些情况下,我应该使用第一个选项而不是第二个选项?
答案 0 :(得分:5)
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 Version String Naming Convention文档:
- 可以扩展
java.runtime.version
系统属性的内容(超出java.version系统属性的内容)以包含构建ID。
因此,似乎属性值可以等于java.runtime
的内容,也可以通过问题中已经指出的内部编号来区分。
无论如何,如先前在a comment to the question中所述,java.runtime.version
属性不会出现在当前记录的system properties中。
答案 1 :(得分:5)
java.version
是Java运行时环境(JRE)的产品版本信息。 JRE是实际上执行Java程序的Java虚拟机的实现。
java.runtime.version
是产品版本以及JRE的内部版本标识符。
答案 2 :(得分:4)
一个是JDK版本java.version,顾名思义,另一个是JRE版本,R是运行时