使用exe4j将Java程序打包为exe
本教程使用软件
- IntelliJ IDEA 2022.2.3 (Ultimate Edition)
- exe4j
- WinRAR(可选)
思路: 代码→jar→exe→自解压程序。
构建jar包
这是一个把你的代码进行编译并塞进一个文件的操作。
打开你的项目。
打开文件-项目结构
。
选择项目设置-工件-加号-JAR-来自具有依赖项的模块
。
选择需要打包的模块
和需要运行的主类
。
生成jar包:构建-构建工件-构建
。
可在输出目录找到jar包。
将jar包转换为exe
打开exe4j。
用户名和公司名可随便填。
注册码:A-XVK258563F-1p4lv7mg7sav
选择 "JAR in EXE" mode。
为你的应用起个名字,并选择输出目录。
如果是窗口程序,选择GUI application,如果是控制台程序,选择Console application。
为exe文件设置名称,如果有需要,还可以选择图标,由于这个教程后面会使用自解压打包,所以此处可以不设置图标。
选择jar包。
这里一般会自动找到jar包的主类,如果没有找到,可以手动选择。
根据你的jdk版本填写最低支持的版本号。
进入高级选项,设置寻找 JRE 的方式,如果不需要嵌入JRE,保持默认即可。
如果需要嵌入JRE,添加一个按目录寻找的方式,使用相对路径。
将该方式移动到最顶层,或者删除其他方式。
选择Client Hotspot VM
可以使得exe启动速度更快。
一路下一步,到这里exe文件就生成完成了,前往输出目录查看。
可以看到exe文件已经生成。
嵌入JRE
开发时使用的是JDK,JDK中包含了很多在运行时不需要的东西,运行Java程序只需要JRE就可以了,所以我们可以将JRE嵌入到exe中,这样就不需要用户安装JRE了。
下载 JRE
我使用的是 LibericaJRE,下载地址:https://bell-sw.com/pages/downloads/#downloads。
根据你的JDK版本选择对应的JRE版本进行下载,我使用的是JDK17。
选择32位可以适配更多机器,并且JRE会更小。在我这个案例中,使用Standard JRE
就够用了,如果你的程序需要使用JavaFX
,那么你需要使用Full JRE
。
按照官方的说法:
Liberica Java SE开发包(JDK)可用于运行、编译和调试应用程序,或用Java模块的子集创建自己的Java Runtime。如果你需要运行一个简单的Java应用程序,并且你正在寻找更小的足迹,请下载一个Java SE运行时环境(JRE)。
Full 版本包括LibericaFX,它基于OpenJFX和Minimal VM。
Standard 版本最适合于不需要任何额外组件的服务器和桌面部署。
下载完成后,解压到与exe文件同一目录下,并重命名为jre
。
打包 EXE
使用 WinRAR 生成自解压程序。
勾选创建自解压程序
。
进入自解压程序的进阶设置。
在解压缩后执行
填写上一步生成的exe文件。
在模式
中选择解压到临时目录
和全部隐藏
,这样可以不用管理解压的过程。
在更新
中选择覆盖所有文件
,防止解压时已经存在文件弹出提示。
在文字及图标
中选择exe文件的图标。
点击确定就可以开始打包了。
我这里新生成包含 JRE 的exe文件,足足多了 20MB 。
在没有安装 JRE 的机器上测试运行。
:::tip 其实可以去掉中间步骤
如果需要内嵌 JRE,直接用 WinRAR 运行jar文件,这样就不需要生成exe文件了。
:::