【问题标题】:Distribute my application jar with a JRE使用 JRE 分发我的应用程序 jar
【发布时间】:2011-10-15 20:45:42
【问题描述】:

如何使用 JRE 分发我的应用程序 jar?我使用launch4j在exe中制作我的可执行jar。

我的应用程序是基于桌面的 Swing 应用程序。我想让它像一个应用程序,如果用户没有安装 JRE,他们可以通过使用嵌入式 JRE 来使用它。我将 JRE 与应用程序一起提供并使用它。卸载应用和JRE会像游戏一样卸载。

我了解,如果我将预安装的 JRE 与我的应用程序一起提供,它就会发生。我还在launch4j 中看到了 JRE 选项卡,但我不明白我将给出哪条路径。 This 链接我也看到了,但是没有提供任何程序或有用的链接,其中明确定义了整个程序。

请给出明确的答案。如果您的答案基于launch4j,我会更喜欢。

【问题讨论】:

    标签: java deployment installation launch4j


    【解决方案1】:

    您如何分发您的应用程序?你有安装程序吗?

    如果您有安装程序,您可以将任何 jre 与其捆绑并配置 launch4j 以使用它。

    我做了什么来重新创建您的用例:

    1. 创建一个目录,例如C:\temp 将我的 jdk 从 C:\Program Files\Java\jdk1.6.0_23 复制到 C:\temp\myownjdk1.6.0_23 配置
    2. launch4j 使用我的 JDK:在 JRE 选项卡中,输入“myownjdk1.6.0_23”为
    3. 捆绑的 JRE 路径,我配置为“仅使用私有 JDK 运行时” - 虽然我不确定这是否真的有必要。

    我使用了 JDK,但我相信您也可以使用 JRE。 另外,我很确定你必须(或可以)为你的包使用相对路径(就像我一样)。

    这是我的配置文件:

    <launch4jConfig>
      <dontWrapJar>false</dontWrapJar>
      <headerType>gui</headerType>
      <jar>C:\temp\demoapp.jar</jar>
      <outfile>C:\temp\thing.exe</outfile>
      <errTitle></errTitle>
      <cmdLine></cmdLine>
      <chdir></chdir>
      <priority>normal</priority>
      <downloadUrl>http://java.com/download</downloadUrl>
      <supportUrl></supportUrl>
      <customProcName>false</customProcName>
      <stayAlive>false</stayAlive>
      <manifest></manifest>
      <icon></icon>
      <jre>
        <path>myownjdk1.6.0_23</path>
        <minVersion></minVersion>
        <maxVersion></maxVersion>
        <jdkPreference>jdkOnly</jdkPreference>
      </jre>
    </launch4jConfig>
    

    【讨论】:

    • 我做同样的事情并且它正在工作,但是如果我不给我的 java(jre) 目录和我的 test.exe 它将找不到 jre 我想让它像游戏一样更动态意味着如果我点击它,它将有一个exe,它将提取jre并提供一些目录选择选项并创建快捷方式选项是否可以使用launch4j。请回复。
    • 那么这应该是您的安装程序:让用户将您的包(yourapp.exe、yourapp.jar 和 yourjdk-directory)解压缩到他选择的目录。这将使 JRE 相对于 yourapp.exe。其中之一可能会有所帮助:java-source.net/open-source/installer-generatorslaunch4j 做了它应该做的,但它不是一个完整的部署/安装程序包。
    • 是的。是的你是对的实际上我想问你是否知道launch4j或其他开源安装程序中的这个选项如果你能给我一些名字。实际上我想让我的应用程序像游戏或其他有一个 exe 的软件,如果你点击它,它会自动提取所有文件并可以使用它。
    • 不确定我是否理解正确 - 您是想一步完成解压并运行,还是有一个安装过程来完成安装、解压、创建快捷方式等操作是否可以接受?我现在能想到的最简单的变体是一个 ZIP 文件或一个自解压 ZIP 文件,它会在之后解压并(一些 SFX 这样做)运行你的应用程序。 PS:这可能会满足您的需求mark.koli.ch/2009/10/…
    • 你拯救了我的兄弟。知道为什么只复制 jre 文件夹不起作用。我已经尝试了所有可能的路径。非常感谢
    【解决方案2】:

    更好的策略是启动应用程序。使用Java Web Start。使用deployJava.js 确保有合适的最低Java 版本可用。用户可能已经安装了合适的 JRE(因此无需下载),并且一旦他们选择卸载应用程序,其他 Java 应用程序和小程序就会将其安装在那里。

    这不符合您提出的某些要求,但总体上是一个更好的选择。

    【讨论】:

    • 投反对票的人愿意分享为什么这个答案对他们来说是不可接受的吗?
    • +1 即使不是完美匹配,至少应该考虑部署java-web-start
    • Java webstart pre-requires Java:这看起来像鸡和蛋的问题,不适合给定的问题。
    • @Panayotis 这就是deployJava.js 的用途。请注意。顺便说一句,请参阅"is 'don't do it' a valid answer?",其中的结论是“是的,只要您提供替代方案”。这种替代方案比任何建议的“解决方案”都要好,以安装可能已过时且不安全的 JRE。
    【解决方案3】:

    您也可以查看BitRock InstallBuilder

    我们为 Java 提供了非常好的支持 - 检测它是否存在以及轻松包含 JRE 和构建启动器二进制文件。

    您可以在此处找到更多信息: http://installbuilder.bitrock.com/docs/installbuilder-userguide/ar01s17.html#_bundling_a_jre

    还有 Java 组件/JRE 文件: http://installbuilder.bitrock.com/java/

    使用上面链接中的文件,只需在项目中设置一些变量,安装程序就可以工作了。

    它不是免费的,但如果你的项目是开源的,你可以申请一个免费的开源许可证,你可以用它来为你的应用程序创建安装程序。

    免责声明:我是 BitRock InstallBuilder 的开发者之一,所以我有偏见。

    【讨论】:

      【解决方案4】:

      我创建了自己的launch4j版本,它允许自动下载和安装所需的JRE - 无人值守 - (它显示下载进度,没有安装进度,并且没有选项将JRE安装程序下载到安装程序以外的其他目录工作目录 - 如果有人对此功能感兴趣,我可以添加此功能)。只需转到 launch4j 的“JRE”选项卡来设置您的选项。此外,这仅适用于 GUI 安装,目前不适用于控制台。在这里你可以得到它:https://github.com/maztan/launch4j_auto_jre_download

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-02
        • 2011-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多