Windows と Linux の両方で共通の Java プログラムを実行しようとしています。
プログラムは、プラットフォームごとにいくつかのことを異なる方法で行う必要があります。
では、Java プログラムが Linux と Windows で実行されていることをどのように検出できますか?
Windows と Linux の両方で共通の Java プログラムを実行しようとしています。
プログラムは、プラットフォームごとにいくつかのことを異なる方法で行う必要があります。
では、Java プログラムが Linux と Windows で実行されていることをどのように検出できますか?
Apache Commons langには、 使用できるクラスSystemUtils.javaがあります。
SystemUtils.IS_OS_LINUX
SystemUtils.IS_OS_WINDOWS
試す:
System.getProperty("os.name");
http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#getProperties%28%29
この便利な単純なクラスを使用できます:
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";
}
}
}
たとえば、「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
詳細は次のとおりです。