java 如何打包成exe
使用 Launch4j 打包 Java 程序为 EXE
Launch4j 是一个跨平台工具,可以将 Java 应用程序打包为 Windows 可执行文件。它支持生成 32 位和 64 位 EXE 文件,并可以嵌入 JRE 或指定外部 JRE 路径。
下载并安装 Launch4j 后,打开其 GUI 界面进行配置:
- 在 "Basic" 选项卡中设置输出 EXE 文件路径、Jar 文件路径和主类名
- 在 "JRE" 选项卡中指定最小和最大 JRE 版本要求
- 在 "Version info" 选项卡中可以添加 EXE 文件的版本信息
配置完成后点击 "Build wrapper" 生成 EXE 文件。生成的 EXE 会尝试使用系统 JRE 运行,如果找不到则会显示错误信息。
使用 JPackage 工具(JDK 14+)
JDK 14 引入了 jpackage 工具,可以直接将 Java 应用程序打包为原生安装包或可执行文件。这是目前最官方的打包方式。
基本命令格式:
jpackage --input target/ --main-jar your-app.jar --main-class com.example.Main --type exe --name MyApp --dest output/
高级选项可以指定图标、JVM 参数等:
jpackage --input target/ --main-jar app.jar --main-class com.example.Main --type app-image --name MyApp --dest output/ --icon app.ico --java-options "-Xmx2048m"
jpackage 会生成一个包含 JRE 的完整应用程序包,确保在没有 Java 环境的机器上也能运行。
使用 Excelsior JET 编译为原生 EXE
Excelsior JET 是一个商业工具,可以将 Java 程序编译为真正的原生可执行文件,不需要 JRE 就能运行。
使用步骤:
- 安装 Excelsior JET 并打开其控制台
- 创建新项目并指定主类和 Jar 文件
- 配置优化选项和目标平台
- 执行编译过程
这种方法生成的 EXE 文件性能接近原生代码,但编译过程可能需要调整代码以解决兼容性问题。
使用 GraalVM Native Image
GraalVM 提供了将 Java 程序编译为原生可执行文件的能力,支持 Windows、Linux 和 macOS。
安装 GraalVM 并设置环境变量后,使用以下命令:
native-image -jar your-app.jar --no-fallback -H:Name=output.exe
需要注意:
- 程序可能需要调整以适应 AOT 编译限制
- 反射、动态类加载等功能需要额外配置
- 生成的 EXE 文件启动速度极快,但体积较大
注意事项
所有打包方法都应考虑:
- 程序依赖的外部资源路径问题
- JVM 参数和内存设置
- 目标系统的位数匹配(32/64位)
- 数字签名和安全证书
- 安装程序制作(对于需要分发的应用)
对于商业软件,建议使用 jpackage 或 Excelsior JET 生成包含安装程序的完整分发包。开源项目可以考虑 Launch4j 或 GraalVM 方案。







