1
我有下面這段代碼,如果我的應用程序在64位平臺上運行,以檢測:檢測Java虛擬機架構10
public static boolean is64BitVM() {
String bits = System.getProperty("sun.arch.data.model", "?");
logger.debug(String.format("sun.arch.data.model=%s", bits));
if (bits.equals("64")) {
return true;
}
String java_vm_name = System.getProperty("java.vm.name");
logger.debug(String.format("java.vm.name=%s", java_vm_name));
String os_arch = System.getProperty("os.arch");
logger.debug(String.format("os.arch=%s", os_arch));
if (bits.equals("?")) {
// probably sun.arch.data.model isn't available
// maybe not a Sun JVM?
// try with the vm.name property
return java_vm_name.toLowerCase().indexOf("64") >= 0;
}
// probably 32bit
return false;
}
它用來在Windows 7上很好地運行,但是升級後的Windows 10同一段代碼開始報告32位架構:
2015-11-05 17:53:15,429 DEBUG [javawsApplicationMain] sun.arch.data.model=32
2015-11-05 17:53:15,431 DEBUG [javawsApplicationMain] java.vm.name=Java HotSpot(TM) Client VM
2015-11-05 17:53:15,431 DEBUG [javawsApplicationMain] os.arch=x86
奇怪的是,當通過JWS運行報告32位架構,但是當我在我的IDE本地運行它,我得到正確的結果(64位)。 似乎是Windows 10安全模型的另一個嚴重問題。 有什麼想法?
您確定您正在運行相同的VM嗎?你有多個安裝? – Doon
你有32位或64位JDK/JRE嗎? – Rustam
哪個版本的jdk或jre? – Marged