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

本地Java13编译项目使用Java11基础镜像构建Docker镜像运行报错咨询

报错根本原因
  • 你本地使用Java 13完成了项目的编译、打包流程,最终生成的application.tar里的jar包包含的是Java 13版本的字节码,字节码版本高于OpenJDK 11支持的最高版本。
  • 你当前的Dockerfile没有任何代码编译逻辑,只是直接将本地提前打包好的产物解压到容器内运行,即使容器基础镜像是Java 11,也无法兼容更高版本的Java字节码,因此触发版本不兼容报错。
快速验证方法

执行以下命令即可确认jar包的实际编译版本:

# 提取主类文件
unzip -p /application/lib/application.jar com/example/Application.class > Application.class
# 查看字节码主版本号
javap -verbose Application.class | grep "major version"

Java 11对应的主版本号为55,Java 13对应的主版本号为57,只要输出结果大于55即可确认是编译版本高于运行环境版本导致的问题。

常见解决方案
  • 本地打包时指定编译兼容Java 11:Maven项目可配置maven-compiler-plugin的source和target参数为11,Gradle项目可配置sourceCompatibility和targetCompatibility为11,重新打包后再构建镜像即可。
  • 使用Docker多阶段构建:将代码编译、打包的环节放到Docker镜像构建过程中完成,全程使用Java 11环境,完全屏蔽本地环境差异的影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:24:03