2013-01-11 9 views
98

मैं विंडोज और लिनक्स दोनों में एक सामान्य जावा प्रोग्राम चलाने की कोशिश कर रहा हूं।विंडोज या लिनक्स का पता लगाना?

कार्यक्रम को प्रत्येक प्लेटफॉर्म पर कुछ चीजों को अलग-अलग करने की आवश्यकता है।

तो मेरे जावा प्रोग्राम को यह कैसे पता लगाया जा सकता है कि यह लिनक्स बनाम विंडोज के तहत चल रहा है?

+3

* "कार्यक्रम को प्रत्येक प्लेटफ़ॉर्म पर कुछ चीजों को अलग-अलग करने की आवश्यकता है।" * क्या, विशेष रूप से? –

उत्तर

137

apache commons lang एक वर्ग है SystemUtils.java आप का उपयोग कर सकते हैं:

SystemUtils.IS_OS_LINUX 
SystemUtils.IS_OS_WINDOWS 
+3

यह बहुत आसान है, और संभावित परीक्षण! – visc

9

आप उदाहरण के लिए, "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 

यहाँ कर रहे हैं और अधिक विवरण:

35

उपयोगी सरल वर्ग पर मेरे द्वारा काँटेदार रहे हैं: 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"; 
     } 
    } 

} 
+2

धन्यवाद। समय बचाने वाला। –

+13

'OS.indexOf (" ... ")> = 0' को 'ओएस.contains (" ... ")' – kazy

+0

के साथ प्रतिस्थापित किया जा सकता है धन्यवाद बहुत कुछ Kazy –

19

मुझे लगता है कि यह एक सबसे अच्छा तरीका अपाचे लैंग निर्भरता का उपयोग करने के यह तय करने के लिए कि आप कौन से ओएस जावा

के माध्यम से प्रोग्रामेटिक रूप से चल रहे हैं
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"); 
    } 
} 
+2

यदि (File.separatorChar == '\\') खिड़कियां = सच; –

+3

या बस 'SystemUtils.IS_OS_WINDOWS'। – SantiBailors

संबंधित मुद्दे