You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Linux Shell中可靠获取单行Java运行时版本信息

问题:在Linux Shell中可靠获取java.runtime.version的值

需要在Linux Shell里获取Java的java.runtime.version属性值,要求方法可靠、具备前瞻性,兼容不同厂商的JDK。之前尝试过两种方式但都有问题:

  1. 使用java -version配合grep/sed处理:输出内容随厂商和版本变化,稳定性差
  2. 使用jshell执行代码:输出包含多余的命令反馈(如->前缀),无法直接得到纯版本值

示例中期望仅得到21+35-LTS这类纯版本字符串。

解决方案

方法一:Java 11+ 推荐方案(直接调用单行执行)

Java 11及以上版本支持java -e参数直接执行单行代码,直接通过Java API获取属性,输出干净无多余内容,完全不受厂商输出格式影响:

java -e 'System.out.println(System.getProperty("java.runtime.version"))'

方法二:优化jshell输出(兼容Java 9+)

如果依赖jshell,可以通过管道过滤掉无关输出,精准提取版本值:

printf $'System.out.println(System.getProperty("java.runtime.version"));\n/exit\n' | jshell -s | sed -n 's/.*-> //p' | grep -v "%$"

该命令会过滤掉->前缀行和结尾的%符号,仅保留版本字符串。

方法三:兼容Java 8及更早版本

对于Java 8及以下版本,可通过临时编译执行简单类来获取属性,执行后自动清理临时文件:

echo 'public class GetRuntimeVersion { public static void main(String[] args) { System.out.println(System.getProperty("java.runtime.version")); } }' > GetRuntimeVersion.java && javac GetRuntimeVersion.java && java GetRuntimeVersion && rm GetRuntimeVersion.java GetRuntimeVersion.class

内容的提问来源于stack exchange,提问作者jaw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 02:07:02