如何使用 Java 确定 Windows 的 32 位或 64 位体系结构?

新手上路,请多包涵

如何使用 Java 确定 Windows 的 32 位或 64 位体系结构?

原文由 Matt 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 548
2 个回答

请注意, os.arch 属性只会为您提供 JRE 的架构,而不是底层操作系统的架构。

如果在 64 位系统上安装 32 位 jre, System.getProperty("os.arch") 将返回 x86

为了真正确定底层架构,您需要编写一些本机代码。有关更多信息,请参阅 此帖子(以及示例本机代码的链接)

原文由 James Van Huis 发布,翻译遵循 CC BY-SA 4.0 许可协议

我不完全信任读取 os.arch 系统变量。如果用户在 64 位系统上运行 64 位 JVM,它就可以工作。如果用户在 64 位系统上运行 32 位 JVM,则它不起作用。

以下代码适用于正确检测 Windows 64 位操作系统。在 Windows 64 位系统上,将设置环境变量“Programfiles(x86)”。它不会在 32 位系统上设置,java 会将其读取为空。

 boolean is64bit = false;
if (System.getProperty("os.name").contains("Windows")) {
    is64bit = (System.getenv("ProgramFiles(x86)") != null);
} else {
    is64bit = (System.getProperty("os.arch").indexOf("64") != -1);
}

对于 Linux、Solaris 或 Mac 等其他操作系统,我们也可能会遇到此问题。所以这不是一个完整的解决方案。对于 mac 你可能是安全的,因为苹果锁定了 JVM 以匹配操作系统。但是 Linux 和 Solaris 等。他们可能仍然在他们的 64 位系统上使用 32 位的 JVM。所以请谨慎使用。

原文由 Boolean 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题