0

我正在用 C++ 编写一个启动器来在 Windows 上启动我的基于 java 的 GUI 应用程序。我CreateProcess用来启动“javaw.exe”。除了总是启动 32 位版本的“javaw.exe”之外,一切正常。

安装 java 时,它会将可执行文件“java.exe”和“javaw.exe”%windir%\System32放在 32 位窗口中。在 64 位 Windows 上,它会将相同的可执行文件放入%windir%\SysWow64.

有3种可能:

  1. 在 32 位 windows 上执行的 32 位启动器:%windir%\System32在搜索路径中,找到了 32 位 javaw.exe。GUI 启动。一切正常。

  2. 在 64 位 Windows 上执行的 32 位启动器:%windir%\System32位于搜索路径中。%windir%\System32被重定向到%windir%\SysWow64(因为在这种情况下我的启动器是 32 位的)。找到 32 位 javaw.exe。GUI 启动。一切正常。

  3. 在 64 位窗口上执行的 64 位启动器:%windir%\System32在搜索路径中。不会发生重定向。它不包含可执行的 javaw.exe。启动器失败。

在第三种情况下如何启动 64 位 javaw.exe?

4

1 回答 1

2

我终于找到了一个解决方案(通过挖掘 stackoverflow 上的各种帖子)。

安装最新版本的 JRE 时,会在 System32 中放置“javaw.exe”的副本。以前版本的 64 位 JRE 可能没有(不确定)。

在任何情况下,注册表项HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment都有一个属性,该属性CurrentVersion指向系统默认 JRE 的项。版本号对应的子键具有JavaHome指向JRE安装位置的属性。

如果未安装 JRE/JDK,则Java Runtime Environment找不到密钥。

于 2011-04-28T14:15:32.693 回答