如何将Java应用打包为独立可执行.exe文件(无需单独JRE文件夹)
将Java应用打包为单文件独立.exe(嵌入JRE)
你要的单文件.exe+内置JRE的需求可以通过以下几种方式实现:
方法1:用JDK官方工具jpackage(JDK 16+)
jpackage是Oracle从JDK16开始内置的标准化打包工具,支持将JRE和应用整合为单文件或安装包:
- 先把你的项目打包成可执行JAR(比如
Mario.jar) - 用
jlink生成只包含应用依赖模块的精简JRE(大幅减少体积):jlink --module-path "${JAVA_HOME}/jmods" --add-modules java.base,java.desktop(根据你的应用依赖调整) --output custom-jre - 用jpackage生成单文件exe:
生成的jpackage --type exe --input . --main-jar Mario.jar --name Mario --runtime-image custom-jre --win-console falseMario.exe会内置你自定义的JRE,运行时无需外部依赖。
方法2:调整Launch4j配置实现JRE嵌入
你之前用Launch4j得到分离的exe和jre文件夹,是因为没开启嵌入功能:
- 打开Launch4j,在「JRE」选项卡中:
- 勾选「Embed JRE」
- 选择你的jre文件夹路径
- 可以设置「Extract JRE to temp dir」让程序运行时自动把JRE解压到系统临时目录
- 在「Output file」设置最终生成的
Mario.exe路径,点击「Build wrapper」即可生成内置JRE的单文件exe。
方法3:Excelsior JET(商业工具,有免费版)
这是一款将Java字节码编译为Windows本地机器码的工具,能直接生成单文件.exe,内置JRE环境,完全不需要外部依赖。免费版适合小型项目,商业版支持更复杂的应用场景。
注意事项
- 嵌入JRE会显著增加exe体积,用
jlink生成精简JRE是必要的优化步骤 - 测试生成的exe在不同Windows版本(Win10/Win11等)上的运行情况,确保临时目录的解压权限正常
内容的提问来源于stack exchange,提问作者Bart
相关产品推荐
相关产品推荐

