检测Windows还是Linux? [重复]

问题

这个问题在这里已有答案:

  • 如何以编程方式确定Java中的操作系统? 17个答案

我正在寻求在Windows和Linux中运行一个通用的Java程序。

该程序需要在每个平台上以不同的方式做一些事情。

那么我的Java程序如何检测它是否应该在Linux与Windows下运行?


#1 热门回答(145 赞)

apache commons lang有一个类8910106801你可以使用:

SystemUtils.IS_OS_LINUX
SystemUtils.IS_OS_WINDOWS

#2 热门回答(69 赞)

尝试:

System.getProperty("os.name");

http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#getProperties%28%29


#3 热门回答(39 赞)

有用的简单类由我分叉:https://gist.github.com/kiuz/816e24aa787c2d102dd0

public class OSValidator {

    private static String OS = System.getProperty("os.name").toLowerCase();

    public static void main(String[] args) {

        System.out.println(OS);

        if (isWindows()) {
            System.out.println("This is Windows");
        } else if (isMac()) {
            System.out.println("This is Mac");
        } else if (isUnix()) {
            System.out.println("This is Unix or Linux");
        } else if (isSolaris()) {
            System.out.println("This is Solaris");
        } else {
            System.out.println("Your OS is not support!!");
        }
    }

    public static boolean isWindows() {
        return (OS.indexOf("win") >= 0);
    }

    public static boolean isMac() {
        return (OS.indexOf("mac") >= 0);
    }

    public static boolean isUnix() {
        return (OS.indexOf("nix") >= 0 || OS.indexOf("nux") >= 0 || OS.indexOf("aix") > 0 );
    }

    public static boolean isSolaris() {
        return (OS.indexOf("sunos") >= 0);
    }
    public static String getOS(){
        if (isWindows()) {
            return "win";
        } else if (isMac()) {
            return "osx";
        } else if (isUnix()) {
            return "uni";
        } else if (isSolaris()) {
            return "sol";
        } else {
            return "err";
        }
    }

}