检测 Windows 还是 Linux? ?

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

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

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

134481 次浏览

Apache commons lang 有一个类 < a href = “ http://grepcode.com/file/repo1.maven.org/maven2/commons-lang/commons-lang/2.6/org/apache/commons/lang/SystemUtils.java”rel = “ noReferrer”> SystemUtils.java 你可使用:

SystemUtils.IS_OS_LINUX
SystemUtils.IS_OS_WINDOWS

您可以使用“ system.properties. os”,例如:

public class GetOs {


public static void main (String[] args) {
String s =
"name: " + System.getProperty ("os.name");
s += ", version: " + System.getProperty ("os.version");
s += ", arch: " + System.getProperty ("os.arch");
System.out.println ("OS=" + s);
}
}


// EXAMPLE OUTPUT: OS=name: Windows 7, version: 6.1, arch: amd64

以下是更多细节:

你可以使用这个有用的简单 同学们:

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 MacOS");
} 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 supported!!");
}
}
 

public static boolean isWindows() {
return OS.contains("win");
}
 

public static boolean isMac() {
return OS.contains("mac");
}
 

public static boolean isUnix() {
return (OS.contains("nix") || OS.contains("nux") || OS.contains("aix"));
}
 

public static boolean isSolaris() {
return OS.contains("sunos");
}


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";
}
}
    

}

我认为这是使用 Apache lang 依赖关系来决定通过 Java 以编程方式运行哪个操作系统的最佳方法

import org.apache.commons.lang3.SystemUtils;


public class App {
public static void main( String[] args ) {
if(SystemUtils.IS_OS_WINDOWS_7)
System.out.println("It's a Windows 7 OS");
if(SystemUtils.IS_OS_WINDOWS_8)
System.out.println("It's a Windows 8 OS");
if(SystemUtils.IS_OS_LINUX)
System.out.println("It's a Linux OS");
if(SystemUtils.IS_OS_MAC)
System.out.println("It's a MAC OS");
}
}