【发布时间】:2018-07-31 12:55:11
【问题描述】:
我正在尝试使用 Java 获取 Ubuntu 版本,但是出现了问题。
使用System.getProperty("os.version")时,返回内核版本。
- 如何获得“14.04”等发布版本?
【问题讨论】:
-
在 java 中
os.name,os.arch,os.version可用。可能下面的答案可以帮助你
我正在尝试使用 Java 获取 Ubuntu 版本,但是出现了问题。
使用System.getProperty("os.version")时,返回内核版本。
【问题讨论】:
os.name,os.arch,os.version 可用。可能下面的答案可以帮助你
您可以在 Java 类中运行任何终端命令(如 lsb_release -a)
Runtime.getRuntime().exec("lsb_release -a");
并解析输出
编辑:清除解决方案
String[] args = new String[] {"/bin/bash", "-c", "lsb_release -r", "with", "args"};
Process proc = new ProcessBuilder(args).start();
注意:你需要使用 lsb_release -r 来获取版本。
【讨论】:
这里有一个sn-p来实现你的目标:
String version = (new BufferedReader(new InputStreamReader((new ProcessBuilder("lsb_release", "-rs")).start().getInputStream()))).readLine();
System.out.println(version);
这两行显示类似的内容:
14.04
【讨论】:
Java 在其操作系统文档中定义了以下系统属性,但没有一个适用于您的情况。
"os.arch" -Operating system architecture
"os.name" -Operating system name
"os.version"-Operating system version
你将不得不使用这样的 java 代码执行lsb_release -a 命令。
Runtime.getRuntime().exec("lsb_release -a");
这将为您提供如下输出。
没有可用的 LSB 模块。
分销商 ID:LinuxMint
描述:Linux Mint 18.1 Serena
发布:18.1
歌名:瑟琳娜
你可以解析它并得到输出。
【讨论】: