【问题标题】:How to bundle a JRE with Launch4j?如何将 JRE 与 Launch4j 捆绑在一起?
【发布时间】:2011-10-27 14:53:06
【问题描述】:

我的电脑上有 Launch4J,它是一个很棒的程序。我感兴趣的其中一项功能是能够将 JRE 捆绑到通用 .EXE 文件中。但是,我找不到任何描述如何执行此操作的文档。

如何将 JRE 与 EXE 捆绑在一起?另外,我在哪里可以获得一个紧凑的便携式 JRE 来运行? Oracle 上的下载链接用于安装程序包。

【问题讨论】:

  • Launch4j 允许您将 JRE 您的 exe 捆绑在一起,以便与它一起使用。您不能使用它将 JRE 嵌入到您的 exe 中。
  • 这是什么意思...
  • @DKIT 这意味着您可以将程序放在包含 JRE 的文件夹中,但您无法使用自动包含 JRE 的 launch4j 生成独立的 .exe 文件。因此,您可以将 JRE 与您的 exe 捆绑在一起(在同一个文件夹中),但不能将它嵌入到 exe 本身中。您最终会将文件夹分发给您的客户,或者最终取决于他们系统的 JRE/JDK。

标签: portability exe java launch4j


【解决方案1】:

经过一些尝试,我终于找到了将 jre 捆绑到我的应用程序中的解决方法:

我将我的应用打包为一个 zip 文件,其中包含以下文件夹:

containerFolder
|- jre
      |-bin (in bin there is java.exe)
      |-lib
|- cfg (to save the user configuration, but it's not needed)
|- bin (my application with the .exe and the .jar and all the other stuff)

在 launch4j 的 xml 文件中,我像这样配置 jre:

<jre>
    <path>../jre</path>
    <opt>-DgvSIG.confDir=../cfg</opt>
</jre>

这里的诀窍是路径不是 java.exe 文件。 jre的路径是相对于.exe的位置,应该指向java.exe文件之前的一个文件夹

我使用的 jre 文件夹只是从安装在 Windows 系统上的 jre 文件夹复制和粘贴。

【讨论】:

  • 这对我帮助很大!文档对此不太清楚......就像一个魅力:-)
  • 嗨,这个路径是什么 ../jre 要么是 C://..java 文件夹中的现有路径,要么是下载的新 java JRE 安装程序。
  • @RajaReddyPolamReddy 是从 .exe 文件到应用程序中 jre 所在文件夹的相对路径
  • 问题询问如何将 JRE in EXE 与 launch4j 捆绑在一起。这个答案显示了如何告诉launch4j 使用您已将 您的EXE 捆绑在一起但不在其中的特定JRE。这似乎是使用 launch4j 可以做到的最好的。 (下面的另一个答案显示了一种创建安装程序的方法,该安装程序将同时安装您的 EXE 和 JRE,但 JRE 不会在 EXE 中。)
  • 那不带 JRE 的 JDK11 呢?
【解决方案2】:

我执行了以下操作,并且使用版本 Launch4j 3.11 对我有用:

  1. 为我的应用程序创建了一个新文件夹(例如调用 我的应用程序)。
  2. 将jar文件从java项目dist文件夹复制到MyApp 连同 lib 文件夹。
  3. 在我的应用程序文件夹 MyApp 中创建了一个名为 jre 的文件夹 所以现在 MyApp 文件夹包含:
    • MyApp.jar
    • lib
    • jre
  4. 从 java jre 文件夹 (C:\Program 文件 (x86)\Java\jre7) 到 MyApp\jre
  5. 在已设置所有必需选项的 Launch4j 中,然后设置 捆绑到“jre”的 JRE 路径

  6. 确保在搜索选项中“仅使用私有 JDK 运行时” 已选中。

【讨论】:

  • 这是否将 jre 与 exe 捆绑在一起,或者当您将其提供给其他人运行时,您是否必须将其全部压缩并将 .exe 与 jre 文件夹一起运行,就像接受的答案一样? stackoverflow.com/a/7582064/3887715
  • 不,这不会将 jre 与 exe 捆绑在一起,唯一可以与 exe 捆绑的就是你的应用 jar 文件
【解决方案3】:

和你一样的问题。现在不用担心了。它都以最大深度解决以解决未来的解决方案。 解决方案如何为您的 jar 捆绑 JRE 而无需用户安装 java 或不安装。您的 java 应用程序将运行。

  1. libbin 文件夹从您的JRE 文件夹复制到您的项目dist 文件夹

  1. 打开launch4j并输入以下设置。

诀窍是您需要提供包含 javaw.exe 的完整路径。

享受!!!!

【讨论】:

  • 将任何文件放在 dist 文件夹中,在清理和构建过程中会出现此错误:无法删除文件...
【解决方案4】:

我刚刚做了这个。上面清楚地描述了捆绑jre的方法。

在这里,我只是分享一个我一直在挣扎的经历。如果要在launch4j创建包装exe后创建安装程序exe,请注意launch4j和jre的文件路径。这是我用来解决问题的途径:

launch4j、bin/jre、资源/bin/jre。

launch4j、bin 和资源处于同一级别。

【讨论】:

    【解决方案5】:

    jre 通常可以在您的 SDK 文件夹中找到。是的,在线链接是安装程序,但是一旦安装,JRE 现在就位于您的本地磁盘上。我的位置在

    ${jdk folder}\jre
    

    如果您真的需要,可以手动删除 JRE 中不需要的部分(我不确定网上有什么可用的)。

    【讨论】:

    • 如何将其捆绑到 EXE 中?我正在尝试将所有内容打包在 jar 中,这样我就不必担心用户是否安装了 Java。我意识到让他们下载 java 可能是最好的主意。但是,我想尝试所有部署选项。
    • @CodeBunny 单独使用 Launch4j 是不可能的,但有人找到了另一个不错的解决方案:mark.koli.ch/…
    【解决方案6】:

    可以在https://github.com/vZome/vzome/blob/master/desktop/platform/windows/README.md 找到使用 Launch4J 将 Java 应用程序与特定 JRE 捆绑在一起的工作示例。此特定分发配置为要求vZome使用捆绑的JRE,而不是在目标平台。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-28
      • 1970-01-01
      • 2013-04-19
      • 2012-09-23
      • 1970-01-01
      • 2015-09-08
      • 1970-01-01
      相关资源
      最近更新 更多