我需要确定特定系统是否安装了32位Java。我正在进行远程查询,只允许我访问文件系统和注册表,因此我无法尝试运行java.exe或运行任何Java代码。
我还想确保我检测到IBM和Sun Java以及任何其他发行版,这些发行版似乎将文件放在文件系统和注册表中的不同位置。
我提出的最好的方法是检查C:\ Windows \ SysWOW64 \ java.exe。这是测试32位Java存在的可靠方法,还是某些版本不会将java.exe放在该文件夹中?
更新:我仍然在寻找更加健全的答案。为了清楚起见,我无法访问命令提示符。此外,无论发布者是谁,安装了什么版本号,以及用户选择安装它的路径,我都想检测Java。
C:\ Windows \ SysWOW64 \ java.exe似乎符合这些要求,但是我希望得到更多知识渊博的人的确认,即每个Java安装程序确实会将该可执行文件放在那里。
这似乎提供了Windows上的信息:
1.)打开Windows命令提示符。
2.)键入:java -XshowSettings:all并按Enter。
3.)命令窗口中将显示许多信息。向上滚动,直到找到字符串:sun.arch.data.model。
4.)如果它说sun.arch.data.model = 32,那么你的VM是32位。如果它说sun.arch.data.model = 64,那么你的VM是64位。
你有权访问命令提示符吗?
方法1:命令提示符
可以通过执行以下命令java -version来确定系统上安装的Java的细节
方法2:文件夹结构
如果您无权访问命令提示符,则确定Java所在的文件夹。
32位:C:\Program Files (x86)\Java\jdk1.6.0_30
64位:C:\Program Files\Java\jdk1.6.0_25
但是,在安装过程中,用户可能会更改安装文件夹。
方法3:注册表
您还可以在注册表编辑器中看到安装的版本。
DisplayName
&DisplayVersion
的条目中,将显示已安装的Java版本检查此键是否为32位和64位Windows机器。
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment
这适用于具有32位JRE的Windows 64位。
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment
这适用于oracle-sun JRE。
如果它不是Oracle的Java,您可能无法分辨。当我安装Oracle Java 64位时,文件进入C:\ Program Files \ Java,但是当我安装32位版本时,它们默认为C:\ Program Files(x86)\ Java。当然,安装Java的人可以覆盖这些默认值。
我在Windows上尝试了Oracle和IBM Java的32位和64位安装程序,并且C:\ Windows \ SysWOW64 \ java.exe的存在似乎是确定32位Java可用的可靠方法。我没有测试过这些安装程序的旧版本,但至少看起来它应该是一种可靠的测试方法,适用于最新版本的Java。
只需编写“java -d64 -version”或d32,如果安装了它,它将给出安装了当前版本的响应