使用Launch4J将JRE捆绑到exe中

Pra*_*nav 5 java launch4j

我正在尝试使用launch4j将JRE捆绑到我的exe中.

我的文件夹结构如下 -

|- test
    |- jre(copied from my windows installation of jre)
        |-bin
        |-lib
    |- jretest.jar (the jar file I am using to create my exe)
    |- jretest.exe (the output exe file)
Run Code Online (Sandbox Code Playgroud)

在Launch4j中,我设置了Bundled JRE Pathas jre.

到目前为止exe工作正常.

但是,当我将我的exe文件复制到别处并运行它时,我收到错误消息This application was configured to use a bundled Java Runtime Environment but the runtime is missing or corrupted.

我搜索了SO并发现了以下问题,但无法让我的应用程序使用那里给出的建议.

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

如何将JRE与Launch4j捆绑在一起?

知道这里捆绑的jre会出现什么问题吗?

我怎样才能创建一个独立的exe?

我不想为我的应用程序制作安装程序,只是打算运行它.

任何帮助将不胜感激.

THe*_*per 6

使用 launch4j 不可能将 JRE 放在 exe 中。launch4j 的“捆绑”选项仅意味着您将 exe 与 JRE 一起分发,因此与它一起分发。您可以通过将以下选项添加到您的配置 xml 文件来完成此操作。

<jre>
    <path>.....</path> 
</jre>
Run Code Online (Sandbox Code Playgroud)

指定 JRE 相对于可执行文件的路径很重要,否则如果将 exe 移动到另一个位置(或另一台计算机),它将无法工作。您收到的错误消息是因为您没有将 JRE 与 exe 一起移动或复制,因此可执行文件无法再找到 JRE。

或者,如果您不使用捆绑选项,launch4j 将尝试使用系统 JRE,如果找不到一个用户重定向到 Oracle JRE 下载页面。如果这不是您想要的,并且您真的想要一个单独的 exe 进行分发,那么您唯一的其他选择是使用 NSIS 或 Inno Setup 之类的安装程序。

  • “launch4j 的‘捆绑’选项只是意味着您将 exe 与 JRE 一起分发,因此与它一起分发。” 所以基本上它就像 Maven 的“提供”范围......考虑到有很多人(包括我)徒劳地尝试将 JRE 实际捆绑到 exe 中,这一点应该在文档中明确说明! (4认同)