如何使用 Java 确定 Windows 的 32 位或 64 位体系结构?
原文由 Matt 发布,翻译遵循 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 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
请注意,
os.arch
属性只会为您提供 JRE 的架构,而不是底层操作系统的架构。如果在 64 位系统上安装 32 位 jre,
System.getProperty("os.arch")
将返回x86
为了真正确定底层架构,您需要编写一些本机代码。有关更多信息,请参阅 此帖子(以及示例本机代码的链接)