问题
这个问题在这里已有答案:
- 如何以编程方式确定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";
}
}
}