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

Spring Boot+Gradle构建Docker镜像运行报错:META-INF/spring.factories无自动配置类

问题根因
  • 你当前打包进镜像的是Gradle默认生成的普通jar包,不是Spring Boot插件生成的包含所有依赖、结构正确的可执行fat jar,普通jar里没有自带Spring Boot自动配置相关的META-INF/spring.factories文件,也没有绑定项目依赖,所以启动报错。
  • Dockerfile和Palantir docker插件配置不匹配:插件里已经把jar重命名为app.jar,但是Dockerfile里写的是添加MoesCrud.jar,文件路径对应错误。
解决方案

步骤1:修正build.gradle的docker配置,指定使用Spring Boot的可执行jar

Spring Boot插件生成的可执行jar对应的任务是bootJar,不是默认的jar,把docker配置块里的jar改为bootJar:

docker {
    name "crudformoes"
    dockerfile file('Dockerfile')
    copySpec.from(bootJar).rename(".*","app.jar")
    buildArgs(['JAR_FILE': "app.jar"])
}

步骤2:修正Dockerfile配置,和插件输出的文件名对应

FROM openjdk:17.0.1
ADD app.jar app.jar
EXPOSE 9090
ENTRYPOINT ["java", "-jar","app.jar"]

步骤3:可选简化方案(无需第三方docker插件)

如果不想使用Palantir docker插件,可以直接使用Spring Boot官方原生的镜像构建能力,直接执行gradle bootBuildImage就能生成符合要求的镜像,添加如下配置即可:

springBoot {
    buildInfo()
}
bootBuildImage {
    imageName = "crudformoes"
    ports = ["9090"]
}

内容的提问来源于stack exchange,提问作者Dennis .VN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:24:08