Detecting Windows or Linux?

JavaLinuxWindowsPlatform Detection

Java Problem Overview


I am seeking to run a common Java program in both Windows and Linux.

The program needs to do some things differently on each platform.

So how can / should my Java program detect it is running under Linux vs. Windows?

Java Solutions


Solution 1 - Java

apache commons lang has a class SystemUtils.java you can use :

SystemUtils.IS_OS_LINUX
SystemUtils.IS_OS_WINDOWS

Solution 2 - Java

Solution 3 - Java

you can use this Useful simple class:

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";
		}
	}
	
}

Solution 4 - Java

I think It's a best approach to use Apache lang dependency to decide which OS you're running programmatically through 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");
    }
}

Solution 5 - Java

You can use "system.properties.os", for example:

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

Here are more details:

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRon WhitesView Question on Stackoverflow
Solution 1 - JavaothmanView Answer on Stackoverflow
Solution 2 - JavaPuceView Answer on Stackoverflow
Solution 3 - JavaDomenico MonacoView Answer on Stackoverflow
Solution 4 - Javauser4798111View Answer on Stackoverflow
Solution 5 - Javapaulsm4View Answer on Stackoverflow