i have an executable which is available for windows, *nix and mac in both 32bit and 64bit. So, my java application needs to detect the operating system and bit architecture of programms which can be run to know which one to start.
i already searched for a solution to detect the bitness of the operating system, jvm or such but i really didnt find the only one function which will return either 32 or 64 on any arbitrary OS. Also the answers i found was like "i think os.arch should return this if maybe on some kind of windows box" - wtf?
Question: How can i know which application architecture will surely execute using Runtime.getRuntime().exec()?
So i'm asking for a function like this:
public int getApplicationArchitecture(){
if(osCanRun32bit())
return 32;
else
return 64;
}
One can assume that a class like below is used (copied from mkyong.com):
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);
}
}
thx for any hint on this