【问题标题】:Java packaging tools - alternatives for jsmooth, launch4j, onejarJava 打包工具 - jsmooth、launch4j、onejar 的替代品
【发布时间】:2019-02-08 08:34:14
【问题描述】:

我已经使用这三个开源工具来打包我的 java 应用程序,但它们现在看起来都像废弃的软件。这三个都是非常好的软件。现在有哪些选择? (或者使用 Java 进行桌面应用开发不再是应用开发人员构建和维护这些工具的“热门”市场?)。

1) exe 包装器: jsmooth - 2.5 年内无新开发 - 不支持 64 位。 launch4j - 一年多没有新开发,支持64位,但是不能签名launch4j创建的exe,所以我更喜欢jsmooth,但不支持64位。

2) 一个罐子: 它可以工作,但在超过 2.5 年的时间里没有新的开发或网站更新。所以,如果它突然因新的 Java 版本而中断,只想切换到受支持的东西/有一个备份计划。

谢谢 埃德加

【问题讨论】:

标签: java launch4j


【解决方案1】:

【讨论】:

    【解决方案2】:

    你检查IzPack了吗?这是创建跨平台安装程序的绝佳软件:

    IzPack 是 Java 平台的安装程序生成器。它生成轻量级安装程序,可以在任何有 Java 虚拟机可用的操作系统上运行。根据操作系统的不同,它可以通过双击或 shell 上的简单“java -jar installer.jar”来启动。最常见的用途是为 Java 平台分发应用程序,但您也可以将其用于其他类型的项目。 IzPack 的主要好处是它提供了一种干净且独特的方式来将项目分发给使用不同操作系统的用户。

    一些真正著名的公司和项目使用它多年(Sun Microsystems、JBoss/RedHat、Scala 语言项目、一些 ObjectWeb/OW2 项目、XWiki 等等)。如果它对他们有好处,它应该对你有好处:)

    【讨论】:

    • 问题是它不提供 exe 或安装 Java 工具。我使用 Izpack 和 JSmooth,Izpack 提供了安装程序,但我仍然需要将它包装在 Jsmooth 中,因此无需安装 Java 即可运行。我还将我的程序包装在另一个 Jsmooth 配置中,这是 Izpack 安装的,因此可以将应用程序作为 exe 启动。
    【解决方案3】:

    由于没有一个答案被批准,并且上面没有提到 JavaFX 2.2(在答案时不可用),所以这里是:

    JavaFX 2.2(自 7u6 以来是 Java 运行时和 SDK 的一部分)也允许在整个 RT 组件中构建本机 exe/dmg/rpm 的该标记。我相信这是对您需求的有效回答,也是 Oracle 官方支持的解决方案。

    https://blogs.oracle.com/talkingjavadeployment/entry/native_packaging_for_javafx

    【讨论】:

    • 这是一个有效的答案,但您需要一台 Mac 来为 Mac 构建本机捆绑包,因为它可能会调用 hdiutil 来创建 DMG 文件。 RPM 存在与使用 rpmbuild 相同的问题。看我的回答,我可以使用任何支持Java的操作系统来构建RPM,DEB,APP,...
    【解决方案4】:

    您是否尝试过 IzPack (http://izpack.org/)?

    【讨论】:

      【解决方案5】:

      你可以试试

      http://winrun4j.sourceforge.net/

      有一个支持 64 位的 exe,并且很容易使用 ini 文件进行配置。

      【讨论】:

        【解决方案6】:

        由于我厌倦了 Java Webstart 最近的安全变化,我创建了自己的工具,JNDT。它在 GPL 下。

        它比 akauppi 的建议更进一步,因为它甚至允许在 Mac 和 Windows 下创建 GNU Linux 包:) 我也用它在 GNU Linux 下创建 Mac 包。目前,它只是一个带有一些依赖项的 Ant 库,允许为 GNU Linux、Mac OS X 和 Windows 创建本地自包含应用程序包。我将它用于我的第一人称射击游戏,我对此非常满意。它捆绑了 JRE,但如果您愿意,它可以使用系统 JRE。

        P.S:即使在 GNU Linux 下,JNDT 也能够将原生 Windows 安装程序创建为带有 NSIS 的可执行文件。

        我了解 GPL 许可不鼓励一些开发人员使用我的工具。在这种情况下,不如使用PackR。

        【讨论】:

          【解决方案7】:

          Maven 2 提供了创建一个 jar 的能力,该 jar 包含所有依赖项作为其组装插件的一部分。结合 manifest 文件的 jar 插件配置(特别是把 Main-class 设置为带有 main 的 Class)就是你需要做的基本打包了。

          在某种程度上,Java web start 现在被认为是分发 Java 应用程序的更好方法,Maven 2 的组装能力与 web start 相结合,无需通过 exe 路径即可获得所需的一切。

          【讨论】:

          • 如果计算机上未安装 Java,Java WebStart 不会提供良好的用户体验。
          • @ThorbjørnRavnAndersen 有一个部署JS脚本,检测Java是否可用并建议安装:docs.oracle.com/javase/tutorial/deployment/deploymentInDepth/…
          • @MeTTeO 是的。在我之前的工作中,我们尝试过,但对我们来说效果不佳。你在生产中使用过吗?
          • @ThorbjørnRavnAndersen 不,但希望它自 2012 年以来得到改进。如果您查看源代码,它已经支持 Java 9。
          【解决方案8】:

          如果您只想要一个 exe(而不是成熟的安装程序),您可以使用 NSIS 制作一个: http://nsis.sourceforge.net/Java_Launcher_with_automatic_JRE_installation

          是的,NSIS 是一个安装程序,但您可以通过剥离所有安装程序的内容,让它在同一目录中运行一个 jar。基本上它的工作方式与 launch4j 类似,但可配置性更高。

          【讨论】:

            【解决方案9】:

            如果您使用 gradle,有一个使用 launch4j(在后台)的插件并且效果很好。它甚至不需要您下载或安装 launch4j,它是完全自动化的。

            https://github.com/TheBoegl/gradle-launch4j

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2012-12-23
              • 2011-03-20
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-04-26
              • 2023-01-21
              • 2010-11-08
              相关资源
              最近更新 更多