如何在Java中检测类Unix操作系统?

2022-09-01 06:27:36

好吧,我知道这将为我提供我正在运行的操作系统的名称,但这并没有多大帮助。我需要知道的是,如果我运行的操作系统是“类Unix”操作系统,我不在乎它是HP-UX,AIX,Mac OS X还是其他什么。System.getProperty("os.name")

可能的 os.name 值列表中,检测“类Unix”操作系统似乎是一种快速而肮脏的方法是检查是否不包含“Windows”。会给我的误报是我的代码不太可能遇到的操作系统!不过,如果有的话,我很想知道更好的方法。os.name


答案 1

使用Commons Lang中的org.apache.commons.lang.SystemUtils实用程序类,它有一个很好的IS_OS_UNIX常量。来自 javadoc:

如果这是一个POSIX编译系统,就像在AIX,HP-UX,Irix,Linux,MacOSX,Solaris或SUN OS中的任何一个中一样。true

如果OS_NAME为空,则该字段将返回 false。

测试变为:

if (SystemUtils.IS_OS_UNIX) {
    ...
}

简单,有效,易于阅读,没有神秘的伎俩。


答案 2

我已经在Windows XP,Vista,Win7,Mac OS 10.3 - 10.6和各种Linux发行版的生产代码中使用了您的方案,没有问题:

    if (System.getProperty("os.name").startsWith("Windows")) {
        // includes: Windows 2000,  Windows 95, Windows 98, Windows NT, Windows Vista, Windows XP
    } else {
        // everything else
    } 

从本质上讲,通过检测Windows来检测类Unix


推荐