如何将 JRE 捆绑到 Java 应用程序的 EXE 中? Launch4j 说“运行时丢失或损坏。”

新手上路,请多包涵

我是 Java 编程的新手,但通常熟悉一切工作原理。我希望能够将 jar 文件和 jre 放入 Windows 可执行文件 (exe) 中,以便在我分发它时,客户端不需要安装 JRE。我应该使用什么程序?

我有 launch4j,它似乎完全符合我的要求,但是当我尝试运行该应用程序时,我得到“此应用程序配置为使用捆绑的 Java 运行时环境,但运行时丢失或损坏。”

我希望我的应用程序只是一个可运行的 exe,而不是安装程序。至少,谁能告诉我如何正确地将 JRE 与 launch4j 捆绑在一起?

原文由 MagicGuy52 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
1 个回答

我可以捆绑 JRE 的唯一方法是使用 Launch4JInno Setup Compiler

首先,在与输出文件 (.exe) 相同的目录中创建一个 jre6 文件夹(例如)。

然后将 JRE 从您的系统复制到您的 jre6 文件夹中。

然后打开 Launch4J 并设置 Bundled JRE 路径- 只需输入 jre6 。然后单击 Build 按钮(显然,在您输入所有其他参数后 - 但您需要在 JRE 选项卡上输入的唯一值是 Bundled JRE 路径 值。)

我原以为这会起作用,但是如果您随后将 .exe 移动到一个新位置(因此它不再与您的 jre6 文件夹位于同一位置),您会得到 This application was configured to use a bundled Java Runtime Environment 但是 当您尝试运行应用程序时出现 运行时丢失或损坏 错误…

我整天都在玩这个,我无法让 Launch4J 将 JRE 包含在 .exe 文件中。在我看来真的很糟糕,因为他们的文档似乎根本没有提到这个问题。

所以我要解决的问题是使用 Inno Setup Compiler (ISC) 。此应用程序用于将您的 .exe 包装为 Windows Installer 文件。所以我在 ISC 脚本中添加了一个设置,将 JRE 复制到安装程序包中。我添加到脚本中的行(在 [Files] 部分)是:

 Source: "M:\Netbeans\MyApp\jre6\*"; DestDir: "{app}\jre6\"; Flags: recursesubdirs createallsubdirs

…一些变通办法,但它成功了。

重复上述所有步骤,你应该被排序了。

原文由 ban-geoengineering 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题