java - operating - ¿Detectando Windows o Linux?
java system getproperty os name values (5)
Esta pregunta ya tiene una respuesta aquí:
Estoy buscando ejecutar un programa Java común tanto en Windows como en Linux.
El programa necesita hacer algunas cosas de manera diferente en cada plataforma.
Entonces, ¿cómo puede / debe mi programa Java detectar que se está ejecutando bajo Linux vs. Windows?
Creo que es un mejor enfoque utilizar la dependencia de Apache Lang para decidir qué sistema operativo está ejecutando programáticamente a través de 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");
}
}
La clase simple útil es bifurcada por mí en: 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";
}
}
}
Puede usar "system.properties.os", por ejemplo:
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
Aquí hay más detalles:
Tratar:
System.getProperty("os.name");
http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#getProperties%28%29
Apache commons lang tiene una clase SystemUtils.java que puedes usar:
SystemUtils.IS_OS_LINUX
SystemUtils.IS_OS_WINDOWS