6

我们正在用java编写一个需要从底层系统收集信息的小型库。我们能够从 java 中的系统属性中读取大部分内容,但是在 linux 上运行时,我们似乎无法找到提取发行版名称的正确方法。通话

System.getProperty("os.name");

返回“Linux”(我们也收集),但我们也在寻找一种方法来获取例如“Ubuntu”。我们在 java 中需要这个解决方案,并且不想做一些 /etc/release 解析

4

3 回答 3

9

您可以尝试调用lsb_release -i,但这不能保证有效。

于 2010-12-02T11:33:03.320 回答
8

要可靠和准确地做到这一点是不可能的,我能建议的最好办法是获取 'uname -a' 的输出并使用它。

注意:这不是 Java 限制 - 根本没有通用(和准确)的方法来识别分发。

于 2010-12-02T11:31:51.890 回答
4

我通常使用以下命令:

猫 /etc/问题

用 Java 读取这个文件应该很容易。问题是这个文件是否存在于每个(或至少大多数)Linux 发行版上。我在任何需要它的地方都找到了它,但是,它并不经常需要。

于 2010-12-04T21:50:07.157 回答