关于Java打包工具:Java打包工具-jsmooth,launch4j和onejar的替代品

Java packaging tools - alternatives for jsmooth, launch4j, onejar

我已经使用了这三个开源工具来打包我的Java应用程序,但是现在它们看起来都像废弃软件。这三个都是非常好的软件。现在有什么选择? (或者正在将Java用于桌面应用程序开发不再是应用程序开发人员构建的"热门"市场


Launch4j刚刚更新! http://launch4j.sourceforge.net/changelog.html


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

JavaFX 2.2(自7u6开始成为Java Runtime和SDK的一部分)也允许构建沿完整RT组件标记的本机exe / dmg / rpm。我相信这是对您的需求的有效回答,也是Oracle官方支持的解决方案。

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


您是否检查过IzPack?这是创建跨平台安装程序的绝佳软件:

IzPack is an installers generator for the Java platform. It produces lightweight installers that can be run on any operating system where a Java virtual machine is available. Depending on the operating system, it can be launched by a double-click or a simple 'java -jar installer.jar' on a shell. The most common use is to distribute applications for the Java platform, but you can also use it for other kinds of projects. The main benefit of IzPack is that it provides a clean and unique way of distributing a project to users using different operating systems.

一些非常著名的公司和项目使用它很多年了(Sun Microsystems,JBoss / RedHat,Scala语言项目,一些ObjectWeb / OW2项目,XWiki等)。如果对他们有好处,那对您也应该有好处:)


您可以尝试

http://winrun4j.sourceforge.net/

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


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


当我受够了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。


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

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


Maven 2提供了创建jar的功能,该jar包含所有依赖项作为其程序集插件的一部分。这与清单文件的jar插件配置结合在一起(并特别将Main-class设置为main的Class),只需要做基本package即可。

在某种程度上,现在Java Web Start被认为是分发Java应用程序的更好方法,并且Maven 2的汇编功能与Web Start相结合可以在不通过exe路由的情况下为您提供所需的一切。


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

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