闲话:好久没写文章了,最近比较忙虽然写了很多杂文但是都没有系统性的整理,后续有时间整理出来分享给大家,今天主要介绍一下最近的一个需求,需要将一个GUI的窗口应用交付给客户使用,直接发给客户jar包肯定有点扯…,结合网上搜索资料整理了几种将jar包打成exe文件的方式,分享给大家,如果文章有错误的地方,欢迎指正。
正文开始
JAR 文件运行需要依赖 Java 环境。当向用户交付 JAR 包时,用户电脑必须预先安装 Java 环境才能运行程序。针对不熟悉环境配置的用户,如何实现便捷使用呢?目前有几种主流解决方案,本文根据实际经验介绍了其中几种处理方式,您可以通过标题直接跳转到相应介绍。
- jpackage(JDK 14+)不依赖于其他软件,是官方提供的一种能够生成平台特定格式的原生包的软件,不用下载其他软件(windows平台打包需要配置一个插件),打包后文件体积较大,实测是Launch4j的3-5倍
- GraalVM(JDK 17)提前编译的 Java 应用程序,支持多语言运行,打包时可以将程序打包为平台特定格式的原生包的软件,不依赖于java环境,但是现在对反射的兼容性不是特别好,据说已经有公司上生产了,大家可以了解一下,感觉未来前景不错 --windows版本配置很复杂(就不放在文章中了,有兴趣的小伙伴可以自行搜索一下)
- Launch4j(推荐) 操作简单,打包后的文件体积很小,只有几十M,可以兼容JDK6以上的程序,没有找到64位安装包,需要自己配置jre,官网地址:https://launch4j.sourceforge.net/
- JSmooth 支持自动下载jre,支持JDK1.4的打包,这个方式没有进行测试,07年以后就没有维护了 https://jsmooth.sourceforge.net/
- exe4j 需要注册,不然每次启动都会有弹窗提示,更加推荐Launch4j方案 https://www.ej-technologies.com/exe4j/download
jpackage
jpackage是官方提供的一种能够生成平台特定格式的原生包的软件,比如 Windows 上的 exe 或 macOS 上的 DMG。每种格式必须基于其运行的平台构建,没有跨平台支持。
官方网站 https://docs.oracle.com/en/java/javase/17/docs/specs/man/jpackage.html
windows打包注意事项
如果需要打包为exe或者msi 需要安装wix3工具,否则会出现如图报错

下载地址如下
https://github.com/wixtoolset/wix3/releases
打开exe安装程序,点击Install安装即可,默认安装目录C:\Program Files (x86)\WiX Toolset v3.14 将这个路径配置到环境变量的path中

配置环境变量

执行命令
jpackage --type exe --input . --name 文件合并工具 --win-dir-chooser --win-shortcut --win-menu --main-jar file_merge-0.0.1-SNAPSHOT.jar --app-version 1.0.0 --vendor lc --icon zz.ico --install-dir fileMerge
以上脚本的含义:帮我将file_merge-0.0.1-SNAPSHOT.jar的jar包打包成一个exe可执行程序,将生成的程序输出到当前目录下,应用的名称为文件合并工具,用户安装时可以手动选择安装目录,自动创建桌面快捷方式和开始菜单,应用图标使用zz.ico,当前应用的版本为1.0.0,
Launch4j
根据提示从https://launch4j.sourceforge.net/下载对应的安装包,如果长时间认证不成功可以开启一下魔法,下载不成功的小伙伴,可以从夸克网盘获取
链接:https://pan.quark.cn/s/e5b73e6e9b9a?pwd=8DgL
然后进行正常的安装操作,这里就不进行介绍,直接进入正题,运行软件

- 选择output file时选定文件夹以后需要指定生成的文件名称和文件类型
- Jar:你打包的jar包
配置jre信息

注意事项:如果你想把这个exe直接发给一个没有jdk环境的用户,这个地方不能使用JAVA环境变量配置,需要指定jre的

&spm=1001.2101.3001.5002&articleId=156687238&d=1&t=3&u=797ef42775754e9387f3f19994532498)
1万+

被折叠的 条评论
为什么被折叠?



