java如何创建exe
使用 Launch4j 将 Java 程序打包为 EXE
Launch4j 是一个跨平台工具,可以将 Java 应用程序包装为 Windows 可执行文件。它生成一个原生 EXE 启动器,自动查找和捆绑 JRE。
下载并安装 Launch4j 后,打开工具并配置以下基本选项:
- Output file:指定生成的 EXE 文件路径(如
C:\output\MyApp.exe)。 - Jar:选择你的应用程序 JAR 文件。
- Min JRE version:设置最低要求的 JRE 版本(如
1.8.0)。
在 JRE 选项卡中,可以指定 JRE 的搜索路径或捆绑自定义 JRE。勾选 Bundled JRE path 并填写相对路径(如 ./jre),确保目标机器无需预装 Java。
使用 JPackage(JDK 14+)
JPackage 是 JDK 自带的打包工具,支持生成包含 JRE 的 EXE 安装包。以下是一个基本命令示例:
jpackage --name MyApp --input target/ --main-jar myapp.jar --main-class com.example.Main --type exe
关键参数说明:
--input:包含 JAR 文件的目录。--main-jar:主 JAR 文件名。--main-class:主类全限定名(可选,若 JAR 有 Manifest 则不需要)。--type:指定输出类型为exe。
添加 --win-console 可保留控制台窗口。若要生成安装程序,使用 --win-dir-chooser 允许用户选择安装目录。
使用 Excelsior JET 进行编译
Excelsior JET 是一款商业工具,能将 Java 程序编译为原生 EXE,无需 JRE。安装后通过以下步骤操作:

在项目目录运行初始化命令:
jetcli --init
编辑生成的 jetproject 文件,指定主类和依赖项。编译命令:
jetcli --build jetproject
生成的 EXE 默认位于 ./jet/build 目录。此方法适合性能敏感型应用,但需注意部分动态特性(如反射)可能需要额外配置。
通过 Inno Setup 创建安装包
若需分发包含 JRE 的完整安装包,可用 Inno Setup 打包:

-
准备目录结构:
/dist /app myapp.jar /jre (JRE 文件) -
编写 Inno Setup 脚本(
.iss文件):[Setup] AppName=MyApp OutputDir=output OutputBaseFilename=MyAppSetup DefaultDirName={pf}\MyApp
[Files] Source: "app\myapp.jar"; DestDir: "{app}" Source: "jre*"; DestDir: "{app}\jre"; Flags: recursesubdirs
[Icons] Name: "{group}\MyApp"; Filename: "{app}\jre\bin\java.exe"; Parameters: "-jar ""{app}\myapp.jar"""
3. 使用 Inno Setup 编译器生成安装程序,用户安装后将自动包含私有 JRE。
### 注意事项
- JRE 依赖:除非使用 Excelsior JET 或捆绑 JRE,否则目标机器需安装匹配版本的 Java。
- 控制台应用:GUI 程序应确保配置为不显示控制台窗口(Launch4j 中取消勾选 Header type 的 `console`)。
- 签名:为 EXE 文件添加代码签名证书可避免安全警告,使用工具如 Signtool:
```bash
signtool sign /f mycert.pfx /p password /t http://timestamp.digicert.com MyApp.exe
每种方法适用于不同场景:开发测试推荐 Launch4j,正式分发建议 JPackage 或 Inno Setup,高性能需求考虑 Excelsior JET。






