有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Windows 10上检测Java虚拟机体系结构

我有以下代码来检测我的应用程序是否在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位)。 这似乎是Windows10安全模型的另一个奇怪问题。 有什么想法吗


共 (1) 个答案

  1. # 1 楼答案

    有效的解决方案是卸载32位版本,然后安装最新的64位Java。起初我已经安装了Java8,但我无法强制启动我的JWS应用程序(甚至在异常中添加自签名证书以及.jnlp文件中的URL也没有帮助)。最终安装了最新的Java7,成功了