我们正在使用Java编写一个小型库,需要从底层系统收集信息。我们可以从Java中的系统属性中读取大部分内容,但是在Linux上运行时似乎无法找到提取发行版名称的正确方法。调用
System.getProperty("os.name");
返回 "Linux"(我们也收集)但我们正在寻找一种方法来获取例如 "Ubuntu"。我们需要在Java中实现此解决方案,并且不希望进行一些/etc/release解析。
我们正在使用Java编写一个小型库,需要从底层系统收集信息。我们可以从Java中的系统属性中读取大部分内容,但是在Linux上运行时似乎无法找到提取发行版名称的正确方法。调用
System.getProperty("os.name");
返回 "Linux"(我们也收集)但我们正在寻找一种方法来获取例如 "Ubuntu"。我们需要在Java中实现此解决方案,并且不希望进行一些/etc/release解析。
lsb_release -i
,但这并不保证有效。lsb_release -d
也给了我非常好的信息,你应该先尝试一下这个。 - John要可靠准确地完成这个任务是不可能的,我能提供的最好建议就是使用“uname -a”的输出结果。
注意:这不是Java的限制,只是没有一种常见(且准确)的方式来识别发行版。
我通常使用以下命令:
cat /etc/issue
用Java读取这个文件应该很容易。问题是这个文件是否存在于每个(或至少大多数)Linux发行版中。我在需要时到处找到它,但是它并不经常需要。