Java 如何自动找到包含jvm的目录以启动jar?

Java 如何自动找到包含jvm的目录以启动jar?,java,jar,jvm,executable-jar,Java,Jar,Jvm,Executable Jar,我想给一些人发送一个jar来测试我的软件,但我需要在32位jvm上启动jar。如何自动验证是否安装了32位jvm,并确保使用正确的jvm启动jar 我想避免要求人们手动操作,因为他们不是技术人员。 你能帮我吗 *********解决方案****** 我发现了两种类型的解决方案,希望与大家分享: 1) 我发现C:\Windows\SysWoW64和C:\Windows\system32包含上次安装的java.exe版本。因此,可以编写一个.bat来验证哪个是用于启动代码的32位jvm 2) 使用生

我想给一些人发送一个jar来测试我的软件,但我需要在32位jvm上启动jar。如何自动验证是否安装了32位jvm,并确保使用正确的jvm启动jar
我想避免要求人们手动操作,因为他们不是技术人员。
你能帮我吗


*********解决方案******
我发现了两种类型的解决方案,希望与大家分享: 1) 我发现C:\Windows\SysWoW64和C:\Windows\system32包含上次安装的java.exe版本。因此,可以编写一个.bat来验证哪个是用于启动代码的32位jvm
2) 使用生成正确的.bat

,据我所知,没有简单的方法可以实现这一点。当然,第一个猜测是%JAVA_HOME%。但它很可能不会设置在“非技术人员”的PC上,所以让我们跳过它

我相信Windows注册表有一种巧妙的方法可以工作

如果Java是与安装程序一起安装的(不仅仅是手动解包),它将有一些注册表项。在我的电脑上,我找到了指向我的Java安装的key
HKEY\U LOCAL\U MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.8.0\U 25\JavaHome
。附近还有JDK密钥。同一台机器上可以安装多个版本,因此最好收集所有这些密钥(HKLM和HKCU中的jre和jdk),并尝试找到一个指向32位版本的密钥。如果一个人的电脑上有非Oracle Java,那么注册表项很可能有另一条路径(如果存在的话)


当您发现java安装时,有很多方法可以检查它是32位还是64位。看一看

Stanislav在回答中提供的链接将为您提供位大小。您需要32位的原因是什么?也许更好的问题是如何消除对特定体系结构的依赖。我需要使用32位jvm,因为我的软件使用一些为32位平台编译的dll。64 jvm无法加载32位版本,因此必须使用32位dll。因此,我想尝试一种解决方案,自动启动32位版本的软件