直接调用system.getproperty("java.version")可获取jvm的java版本号字符串,如"17.0.1";推荐java 9+使用runtime.version()进行语义化版本比较。

直接调用 System.getProperty("java.version") 即可获取当前 JVM 的 Java 版本号,返回值是字符串类型,例如 "17.0.1" 或 "21.0.2"。
基本用法
这是最常用的方式,无需额外参数或配置:
String version = System.getProperty("java.version");- 结果通常形如
"17.0.1"(主版本.次版本.修订号),不包含厂商前缀(如 OpenJDK、Oracle JDK 的标识) - 该属性由 JVM 启动时自动设置,运行时不可修改
常见相关属性
单靠 java.version 有时信息不足,可配合以下属性一起使用:
-
java.specification.version:Java SE 规范版本,如"17" -
java.vm.vendor:JVM 厂商,如"Eclipse Adoptium"或"Oracle Corporation" -
java.runtime.version:完整运行时版本号,可能含构建信息,如"17.0.1+12-LTS"
注意事项
该方法返回 null 的情况极少,但需注意:
- 不是所有环境都严格遵循规范,某些嵌入式或裁剪版 JVM 可能未设置该属性(极少见)
- 不能用于判断 JDK/JRE 类型(需结合
java.home和文件系统检查) - 若需精确判断是否支持某特性(如 record、sealed class),建议用
Runtime.version()(Java 9+)获取Runtime.Version对象,支持语义化比较
替代方式(Java 9+)
更推荐使用现代 API 进行版本判断:
int major = Runtime.version().feature(); // 返回 17、21 等主版本号Optional<integer> interim = Runtime.version().interim(); // 次版本(通常为空)</integer>- 支持链式比较:
Runtime.version().compareTo(Version.parse("21")) >= 0
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











