上一篇                     
               
			  Java程序如何打包为exe
- 后端开发
- 2025-06-29
- 4819
 使用Launch4j、JSmooth或JDK14+的jpackage工具将Java程序打包成EXE,主要步骤:先编译为可执行JAR,再通过工具封装成EXE,可捆绑JRE实现无环境依赖运行。
 
核心打包方案
使用Launch4j(推荐)
原理:将JAR包封装为EXE,自动处理JRE依赖
步骤:
- 下载安装 Launch4j
- 配置基础选项: 
  - Output file:生成的EXE路径(如 app.exe)
- Jar:选择你的JAR文件
- Icon(可选):设置EXE图标(需.ico格式)
 
- Output file:生成的EXE路径(如 
- 配置JRE依赖: 
  - Min JRE version:最低Java版本(如 8.0)
- JRE路径选项: 
    - 若用户已有JRE:选 Search registry(默认)
- 需捆绑JRE:选 Bundled并指定JRE文件夹
 
- 若用户已有JRE:选 
 
- Min JRE version:最低Java版本(如 
- 生成EXE:点击工具栏齿轮图标
优点:免费、轻量、支持错误提示
缺点:需手动捆绑JRE实现免环境运行 

使用jpackage(JDK14+官方工具)
原理:JDK内置工具,生成安装包
步骤:
- 确保JDK≥14
- 命令生成安装包: jpackage --input target/ --name MyApp --main-jar app.jar --main-class com.example.Main --type exe --win-console - --input:JAR所在目录
- --win-console:保留控制台窗口(GUI程序去掉此参数)
 
- 自动生成包含JRE的安装包(位于输出目录)
优点:官方支持、自动捆绑JRE、生成安装程序
缺点:需新版JDK、输出文件较大(含JRE) 

使用Excelsior JET(高性能商业方案)
原理:编译Java为本地代码
步骤:
- 下载 Excelsior JET
- 导入JAR文件,按向导配置
- 选择编译模式: 
  - Trial Run:测试兼容性
- Full Compilation:生成优化后的EXE
 
- 输出独立EXE(可选捆绑JRE)
优点:启动快、反编译难度高
缺点:付费(免费版有试用限制) 
关键注意事项
- JRE处理: 
  - 方案①:要求用户预装Java(降低EXE体积)
- 方案②:用jpackage/Launch4j捆绑JRE(增加100~200MB)
 
- 依赖管理: 
  - 使用Maven/Shadow插件生成fat-jar(包含所有依赖):<!-- Maven的pom.xml配置 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.4.1</version> <executions> <execution> <phase>package</phase> <goals><goal>shade</goal></goals> </execution> </executions> </plugin>
 
- 使用Maven/Shadow插件生成
- 图标与元数据: 
  - EXE图标:通过Launch4j或Resource Hacker工具修改
- 版本信息:jpackage支持--win-version-attributes添加公司名等
 
- EXE图标:通过Launch4j或
- 安全提示: 
  - 未签名EXE可能被Windows拦截
 解决方案:购买代码签名证书(如DigiCert)或引导用户点击“更多信息→仍要运行”
 
- 未签名EXE可能被Windows拦截
方案选择建议
| 场景 | 推荐工具 | 理由 | 
|---|---|---|
| 简单分发免费程序 | Launch4j | 免费、快速、兼容性好 | 
| 需安装向导的商业软件 | jpackage | 官方支持、自动捆绑JRE | 
| 高性能/反保护需求 | Excelsior JET | 本地编译、启动速度快 | 
常见问题解决
- EXE闪退:
 用命令行运行EXE查看报错(如缺失依赖库)
- 32/64位系统兼容:
 捆绑JRE时需匹配目标系统架构
- 杀毒软件误报:
 提交EXE到VirusTotal检测并联系厂商申诉
引用说明:
- Launch4j官方文档:http://launch4j.sourceforge.net/docs.html
- Oracle jpackage指南:https://docs.oracle.com/en/java/javase/17/jpackage/
- Excelsior JET教程:https://www.excelsiorjet.com/docs/
- Maven Shade插件:https://maven.apache.org/plugins/maven-shade-plugin/
本文方法经JDK17+Windows 11环境实测,更新于2025年10月。
 
 
 
			