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

如何将Java项目或Jar包打包为内置JRE的Linux可执行文件

将Java Jar包打包为内置JRE的Linux可执行文件方案

以下是3种常见且可落地的实现方式:

方案1:JDK官方jpackage工具(JDK14+ 首推)

jpackage是JDK14及以上版本内置的官方打包工具,兼容性最好,操作门槛低:

  • 第一步:提前编译得到可正常运行的可执行Jar包,使用jdeps命令扫描Jar依赖的JDK模块:
    jdeps --list-deps your-app.jar
  • 第二步:根据扫描到的模块生成精简JRE(减少最终包体积,不需要精简可跳过此步直接用完整JRE):
    jlink --add-modules java.base,java.sql(替换为你扫描到的模块) --output ./minimal-jre --no-header-files --no-man-pages --strip-debug
  • 第三步:执行jpackage命令打包:
    jpackage --type app-image --input ./jar存储目录 --main-jar your-app.jar --main-class com.xxx.你的启动类全限定名 --runtime-image ./minimal-jre(用完整JRE就替换为JRE目录路径) --name your-app --dest ./output
  • 最终生成的output/your-app目录下的同名可执行文件可直接运行,整个目录拷贝到任意Linux服务器即可启动,无需额外安装JRE。

方案2:makeself打包为单文件自解压可执行程序

如果需要单个文件方便传输部署,用makeself把JRE、Jar、启动脚本打包为单个自解压文件即可:

  • 第一步:准备好3类文件,统一放到app-pkg目录下:可执行Jar包、和目标服务器架构匹配的JRE(精简/完整都可)、启动脚本start.sh
  • 第二步:编写启动脚本start.sh,示例内容:
    #!/bin/bash
    APP_DIR=$(dirname "$0")
    $APP_DIR/jre/bin/java -jar $APP_DIR/your-app.jar "$@"
    
    给脚本加执行权限:chmod +x start.sh
  • 第三步:执行makeself打包命令:
    makeself --notemp ./app-pkg your-app "你的应用名称" ./start.sh
  • 生成的your-app就是单个可执行文件,传到服务器执行./your-app即可自动解压内置的JRE和Jar运行。

方案3:GraalVM Native Image(原生二进制,无JRE依赖)

如果追求极小体积和极快启动速度,可以用GraalVM把Java程序直接编译为Linux原生二进制文件:

  • 该方案生成的可执行文件完全不需要JRE,体积通常只有几十MB,启动速度毫秒级
  • 注意限制:项目中用到的反射、动态代理、JNI等动态特性需要提前配置元数据,否则会运行报错,适合对性能要求高、代码可控的项目使用。

注意事项

  • 打包用的JRE架构必须和目标服务器架构匹配,x86服务器用x86版JRE,ARM服务器用ARM版JRE
  • 最终生成的可执行文件需要加执行权限才能运行:chmod +x your-app

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 09:57:03