如何检测安装的 JRE 类型 - 32 位与 64 位

2023-12-11

在使用 NSIS 安装程序进行安装期间,我需要检查系统上安装了哪个 JRE(32 位与 64 位)。我已经知道我可以检查系统属性”sun.arch.data.model”,但这是 Sun 特有的。我想知道是否有一个标准的解决方案。


可以使用“检索正在使用的 JVM 架构”os.arch“ 财产:

System.getProperty("os.arch");

“os”部分似乎有点用词不当,或者最初的设计者可能没有想到 JVM 会在他们不为其编写的架构上运行。返回值似乎是不一致的.

NetBeans 安装程序团队是解决问题JVM 与操作系统架构的比较。引用:

x64 位:Java 和系统

追踪为问题 143434.

目前我们使用 x64 位 JVM 来 确定系统是否(因此 Platform.getHardwareArch()) 是 64 位 或不。这绝对是错误的,因为 可以运行 32 位 JVM 64位系统。我们应该找到一个 检查操作系统真实64位的解决方案 如果在 32 位 JVM 上运行。

  • 对于Windows,可以使用WindowsRegistry.IsWow64Process()来完成
  • 对于 Linux - 通过检查 'uname -m/-p' == x86_64
  • 对于 Solaris,可以使用例如来完成'isainfo -b'
  • 对于 Mac OSX,它不能使用 uname 参数来完成,也许可以 通过创建 64 位二进制文​​件解决 并在平台上执行... (不幸的是,这不起作用:( 我仅使用 x86_64 创建了二进制文件 和 ppc64 arch 并成功 对老虎处决..)
  • 对于通用 Unix 支持 - 也不清楚......可能会检查 对于相同的“uname -m/-p”/“getconf” LONG_BIT' 并将其与一些比较 可能的 64 位值(x86_64、x64、 amd64、ia64)。

来自所有运行在 64 位 Ubuntu 8.0.4 上的不同 JVM 的示例属性:

32位IBM 1.5:

java.vendor=IBM Corporation
java.vendor.url=http://www.ibm.com/
java.version=1.5.0
java.vm.info=J2RE 1.5.0 IBM J9 2.3 Linux x86-32 j9vmxi3223-20061001 (JIT enabled)
J9VM - 20060915_08260_lHdSMR
JIT  - 20060908_1811_r8
GC   - 20060906_AA
java.vm.name=IBM J9 VM
java.vm.specification.name=Java Virtual Machine Specification
java.vm.specification.vendor=Sun Microsystems Inc.
java.vm.specification.version=1.0
java.vm.vendor=IBM Corporation
java.vm.version=2.3
os.arch=x86
os.name=Linux
os.version=2.6.24-23-generic
sun.arch.data.model=32

64位太阳1.6:

java.vendor=Sun Microsystems Inc.
java.vendor.url=http://java.sun.com/
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport.cgi
java.version=1.6.0_05
java.vm.info=mixed mode
java.vm.name=Java HotSpot(TM) 64-Bit Server VM
java.vm.specification.name=Java Virtual Machine Specification
java.vm.specification.vendor=Sun Microsystems Inc.
java.vm.specification.version=1.0
java.vm.vendor=Sun Microsystems Inc.
java.vm.version=10.0-b19
os.arch=amd64
os.name=Linux
os.version=2.6.24-23-generic
sun.arch.data.model=64

64 位 GNU 1.5:

java.vendor=Free Software Foundation, Inc.
java.vendor.url=http://gcc.gnu.org/java/
java.version=1.5.0
java.vm.info=GNU libgcj 4.2.4 (Ubuntu 4.2.4-1ubuntu3)
java.vm.name=GNU libgcj
java.vm.specification.name=Java(tm) Virtual Machine Specification
java.vm.specification.vendor=Sun Microsystems Inc.
java.vm.specification.version=1.0
java.vm.vendor=Free Software Foundation, Inc.
java.vm.version=4.2.4 (Ubuntu 4.2.4-1ubuntu3)
os.arch=x86_64
os.name=Linux
os.version=2.6.24-23-generic

(GNU 版本不报告“sun.arch.data.model”属性;想必其他 JVM 也不报告。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检测安装的 JRE 类型 - 32 位与 64 位 的相关文章

随机推荐