我有以下代码来检测我的应用是否在64位平台上运行:
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安全模型的另一个棘手问题。 有什么想法吗?
答案 0 :(得分:0)
解决方案是卸载32位版本然后安装最新的64位Java。起初我已经安装了Java 8但是我无法强制启动我的JWS应用程序(甚至将自签名证书添加到例外以及来自.jnlp文件的URL没有帮助)。最终安装了最新的Java 7,并且做到了这一点。