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

Docker运行Java容器查看日志报找不到EazyBankApplication主类错误

错误原因

你的Dockerfile存在两个核心问题,直接触发主类找不到的报错:

  • 直接复制了src/main/java下的Java源代码到镜像中,openjdk:17是Java运行时镜像,不包含源码编译能力,容器内根本不存在编译完成的EazyBankApplication.class文件,JVM自然找不到要加载的主类。
  • 你的启动类属于com.eazybank包,全限定类名是com.eazybank.EazyBankApplication,就算你提前把源码编译成class文件,直接在/eazyApp目录执行java EazyBankApplication,也会因为类路径和全限定类名不匹配触发类找不到错误,这也是你之前补目录路径依然报错的核心原因。
修复方案

不要直接复制源码到运行时镜像里,推荐用本地打包+镜像运行jar或者多阶段构建的方式处理。

方案1:本地打包后构建镜像(适合本地调试,操作最简单)

  1. 先在项目根目录执行构建工具的打包命令:Maven项目执行mvn package -DskipTests,Gradle项目执行gradle build -x test,确认target(Maven)或者build/libs(Gradle)目录下生成了可执行jar包。
  2. 替换Dockerfile为如下内容,注意把jar包名称替换成你实际生成的文件名:
FROM openjdk:17
RUN mkdir /eazyApp
# 复制打包好的可执行jar到镜像内
COPY ./target/eazybank-0.0.1-SNAPSHOT.jar /eazyApp/app.jar
WORKDIR /eazyApp
# 启动命令直接运行jar包
CMD ["java", "-jar", "app.jar"]
  1. 重新构建镜像、启动容器即可正常运行。

方案2:多阶段构建(推荐生产使用,镜像体积更小)

不需要本地提前打包,镜像构建过程中自动完成编译打包,最终运行镜像只保留运行时环境和打好的jar包,Dockerfile参考如下:

# 第一阶段:构建环境,用带Maven的JDK镜像完成编译打包
FROM maven:3.9-openjdk-17-slim AS build
WORKDIR /app
# 先复制pom文件下载依赖,利用Docker构建缓存减少重复构建时间
COPY pom.xml .
RUN mvn dependency:go-offline -B
# 复制源码执行打包
COPY src ./src
RUN mvn package -DskipTests -B

# 第二阶段:运行环境,只复制打好的jar包,大幅压缩镜像体积
FROM openjdk:17-slim
WORKDIR /eazyApp
COPY --from=build /app/target/*.jar app.jar
CMD ["java", "-jar", "app.jar"]
注意事项

不要尝试直接在openjdk基础镜像里跑.java源码,也不要手动拼接class路径去运行单个class文件,从类名判断你写的是SpringBoot项目,打包后的可执行jar已经内置了所有依赖和正确的启动类配置,直接用java -jar启动是最稳定的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:36:21