You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Java程序转为无Java环境可运行的EXE文件?

解决JAR转EXE后无Java环境也能运行的问题

我之前也碰到过一模一样的困扰!用jsmooth或者launch4j默认配置打包的EXE,本质只是个「Java启动器」,它会去找系统里已安装的Java环境,没有的话自然跑不起来。核心解决思路是把JRE(Java运行环境)和你的应用打包在一起,下面给你几个亲测有效的方案:

方案1:优化Launch4j配置(免费、轻量)

Launch4j其实自带捆绑JRE的功能,只是默认没开启,按下面步骤来:

  • 先下载和你的应用匹配的JRE(比如Windows x64版本,版本号和你开发时用的一致最好),把整个JRE文件夹放到你的项目根目录,比如命名为jre
  • 打开Launch4j,在「JRE」标签页做以下设置:
    • 勾选「Bundle JRE」选项
    • 填写「Min JRE version」(比如1.8.0_200,确保和你下载的JRE版本匹配)
    • 在「JRE path」里填相对路径./jre(这样EXE会从自身所在目录找JRE)
    • 可选:设置「Runtime bitness」为64-bit only或32-bit only,匹配你下载的JRE位数
  • 重新打包后,把EXE和jre文件夹一起发给用户,就能在无Java环境的机器上运行了

方案2:用jpackage(官方原生工具,Java 14+)

Oracle从Java 14开始自带了jpackage工具,专门用来打包Java应用成原生安装包(EXE、DMG等),还能自动捆绑精简版JRE,非常推荐:

  1. 先确保你安装了Java 14或更高版本的JDK
  2. (可选但推荐)用jlink生成精简版JRE,只包含你的应用需要的模块,大幅减小体积:
    jlink --module-path $JAVA_HOME/jmods --add-modules java.base,java.desktop --output ./jre-image
    
    (java.desktop是GUI应用需要的模块,控制台应用只留java.base就行)
  3. 执行jpackage命令打包成EXE:
    jpackage --input ./your-jar-directory --name YourAppName --main-jar your-app.jar --type exe --runtime-image ./jre-image
    
    这个命令会生成一个标准的Windows安装程序,用户安装后就能直接运行,完全不需要系统有Java环境

方案3:Excelsior JET(编译成本地机器码,无需JRE)

如果追求极致性能和完全脱离JRE,可以试试Excelsior JET——它能把Java字节码直接编译成Windows原生机器码,打包后的EXE完全不需要JRE支持。它有免费版(针对小项目,单JAR不超过1MB),操作也很简单:

  • 导入你的JAR文件,跟着向导完成编译和打包
  • 免费版有功能限制,但个人开发或小型项目完全够用

额外注意事项

  • 注意系统位数兼容性:比如你用x64的JRE打包,目标机器也得是64位Windows;如果要兼容32位系统,就用32位的JRE
  • 打包前最好测试:把打包后的文件放到一台干净的、没装Java的虚拟机里测试,确保能正常运行

内容的提问来源于stack exchange,提问作者hwan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:15:13