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

如何使用Maven通过Dockerfile运行Java代码?构建运行报错如何解决?

问题错误点
  • Dockerfile路径配置错误:构建完成后jar包的存储路径和运行命令中引用的路径不一致,导致启动时找不到可执行jar文件。
  • Maven打包配置缺失:pom.xml未指定主类全限定名,打包生成的jar包无主清单属性,执行java -jar命令时会抛出找不到主类的异常。
  • 镜像构建逻辑不合理:未使用多阶段构建的情况下,要么最终镜像冗余携带Maven环境,要么精简运行镜像未安装对应版本的JRE/JDK,无法正常运行Java程序。
修复步骤
  1. 修正pom.xml配置,在build的plugins节点下添加maven-jar-plugin配置,指定启动主类:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.2.0</version>
    <configuration>
        <archive>
            <manifest>
                <!-- 替换为实际的主类全限定名 -->
                <mainClass>com.yourpackage.YourMainClass</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>
  1. 使用多阶段构建逻辑编写Dockerfile,兼顾镜像大小和路径正确性:
# 构建阶段:使用Maven官方镜像完成代码编译打包
FROM maven:3.8-openjdk-11 AS builder
WORKDIR /build
# 提前复制pom.xml做依赖缓存,提升后续构建速度
COPY pom.xml .
RUN mvn dependency:go-offline
# 复制源码执行打包
COPY src ./src
RUN mvn package -Dmaven.test.skip=true

# 运行阶段:使用精简JRE镜像作为运行环境
FROM openjdk:11-jre-slim
WORKDIR /app
# 从构建阶段复制生成的jar包到运行目录
COPY --from=builder /build/target/*.jar ./app.jar
# 配置启动命令
ENTRYPOINT ["java", "-jar", "app.jar"]
  1. 执行构建和运行命令即可:
# 构建镜像
docker build -t java-demo .
# 启动容器
docker run java-demo

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:54:05