143

Windows と Linux の両方で共通の Java プログラムを実行しようとしています。

プログラムは、プラットフォームごとにいくつかのことを異なる方法で行う必要があります。

では、Java プログラムが Linux と Windows で実行されていることをどのように検出できますか?

4

5 に答える 5

203

Apache Commons langには、 使用できるクラスSystemUtils.javaがあります。

SystemUtils.IS_OS_LINUX
SystemUtils.IS_OS_WINDOWS
于 2013-01-12T00:35:32.177 に答える
90

試す:

System.getProperty("os.name");

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

于 2013-01-11T23:25:20.597 に答える
61

この便利な単純なクラスを使用できます:

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";
        }
    }
    
}
于 2014-07-21T09:02:01.967 に答える
10

たとえば、「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

詳細は次のとおりです。

于 2013-08-28T05:29:29.967 に答える