您如何确定使用Java的Windows的32位或64位架构?

2022-08-31 16:51:52

您如何确定使用Java的Windows的32位或64位架构?


答案 1

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

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

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,您可能是安全的,因为Apple锁定了JVM以匹配操作系统。但是Linux和Solaris等。他们可能仍然在其 64 位系统上使用 32 位 JVM。因此,请谨慎使用。


答案 2

请注意,酒店仅提供JRE的架构,而不是底层操作系统的架构。os.arch

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

为了实际确定底层体系结构,您需要编写一些本机代码。有关详细信息(以及指向示例本机代码的链接),请参阅此帖子


推荐