从C ++中查找JRE(windows)

时间:2011-07-24 17:45:40

标签: c++ registry java

我正在为我的Java程序制作一个小型启动程序,这个想法是我可以在调用Java之前设置内存需求,相关库以及类似的东西。

然而,我越来越多地发现似乎并没有从任何方面调用Java的方法。

  1. 系统32中不再存在java.exe,因此无法保证。
  2. 在大多数计算机上,HKEY_LOCAL_MACHINE或HKEY_CURRENT_USER下的注册表项定义了JRE子项,然后是JavaHome值。这适用于大多数计算机,但在我的新计算机上(新的Java安装,不到两周前构建),这些注册表不存在。 CURRENT_USER中有一个JRE条目,但没有JavaHome。
  3. 并非始终设置或设置JAVA_HOME环境变量。特别是在没有安装JDK的机器上。
  4. 我显然不能依赖Java安装到C:/ Program Files / Java。
  5. 我应该如何能够从C ++中可靠地调用java程序?或者就此而言,从何而来?我可以让我的程序尝试所有四种可能的方法,但如果它们出现空的话呢?

    提前致谢。

3 个答案:

答案 0 :(得分:2)

首先,强烈建议使用一种可用的脚本语言来查找JRE位置,设置内存要求和类似内容。由于BAT文件的语言相对较差,您可以使用VBS或JScript并使用名为cscript的实用程序运行它们。

关于JRE的事实。 通常,JRE可以在注册表中找到。例如,在我的机器上,我可以看到以下条目。 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6.0_26

可能你有更新的安装...无论如何检查Java安装的条目: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 在我的例子中,我有条目{26A24AE4-039D-4CA4-87B4-2F83216012FF},其中名为InstallLocation的密钥包含Java Home的路径。

下一步是检查Java home环境变量。

最后一种方法是在%ProgramFiles%

中执行搜索

答案 1 :(得分:1)

在安装程序中尝试所有方法,也许您找到多个JRE,可能没有。然后显示检测到的JRE并允许选择要使用的用户。用户也可以指向JRE,尤其是当安装程序没有找到它时。

答案 2 :(得分:0)

Eclipse使用C shim(eclipse.exe)来生成JVM。您可以查看该源代码并进行调整。