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

Spring Boot构建报错:pom.xml或Dockerfile存在什么问题?

问题与解决方案

问题场景

已重装Java并重置JAVA_HOME确保Maven使用正确版本,但构建时仍抛出如下错误:

#9 67.23 [ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:3.0.1:repackage (repackage) on project backend: Execution repackage of goal org.springframework.boot:spring-boot-maven-plugin:3.0.1:repackage failed: Unable to load the mojo 'repackage' in the plugin 'org.springframework.boot:spring-boot-maven-plugin:3.0.1' due to an API incompatibility: org.codehaus.plexus.component.repository.exception.ComponentLookupException: org/springframework/boot/maven/RepackageMojo has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 60.0

本地环境信息:

zack project-portfolio >> java --version
openjdk 19.0.1 2022-10-18
OpenJDK Runtime Environment Homebrew (build 19.0.1)
OpenJDK 64-Bit Server VM Homebrew (build 19.0.1, mixed mode, sharing)
zack project-portfolio >> mvn --v
Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
Maven home: /usr/local/Cellar/maven/3.8.6/libexec
Java version: 19.0.1, vendor: Homebrew, runtime: /usr/local/Cellar/openjdk/19.0.1/libexec/openjdk.jdk/Contents/Home
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "13.0.1", arch: "x86_64", family: "mac".

怀疑问题出在pom.xml或Dockerfile,附上pom.xml内容:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.0.1</version>
    </parent>
    <groupId>com</groupId>
    <artifactId>backend</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>backend</name>
    <description>Backend for portfolio</description>
    <properties>
        <java.version>1.7</java.version>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <finalName>project</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

问题分析

  1. Spring Boot 版本与编译配置不匹配:Spring Boot 3.0.1 最低要求 Java 17,但pom.xml里强制指定了Java 1.7作为编译源和目标版本。Spring Boot 3.x的Maven插件是用Java 17(类文件版本61.0)编译的,当Maven尝试用Java 7的规则去加载插件时,就会触发版本不兼容错误。
  2. Docker 环境Java版本偏低:报错里的#9表明是Docker构建阶段出现的问题,本地用的是Java 19,但容器内的Java版本可能是Java 16(类文件版本60.0),无法识别Java 17编译的类文件。

解决步骤

1. 修正 pom.xml 的 Java 版本配置

将pom.xml中的Java版本属性改为17或19(与本地/容器Java版本一致),简化后的配置如下:

<properties>
    <java.version>19</java.version>
</properties>

Spring Boot的父POM会自动同步maven.compiler.source和maven.compiler.target到指定的Java版本,无需单独配置。

2. 统一 Docker 容器的 Java 版本

检查Dockerfile,确保基础镜像使用Java 17及以上版本,比如:

  • 官方OpenJDK镜像:openjdk:19-jdk-slim
  • Spring Boot专用镜像:springboot/openjdk:19

确保容器内的Java版本和本地环境一致,避免跨版本兼容问题。

3. 清理缓存并重新构建

执行以下命令清理Maven本地缓存,重新构建项目:

mvn clean install

如果是Docker构建,先清理本地镜像缓存再重新构建:

docker system prune -f
docker build -t your-project-image .

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:55:20