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

Spring Boot 3.1.1升级后启动报NoSuchMethodError求助

Spring Boot 3.1.1 + Spring 6 + JDK17启动报错:NoSuchMethodError on ResponseEntity构造方法

我已将Spring Boot升级至3.1.1版本、Spring升级至6版本并使用JDK17开发,项目编译成功,但安装所有依赖后无法启动应用,出现以下报错:

jakarta.servlet.ServletException: Handler dispatch failed: java.lang.NoSuchMethodError: 'void org.springframework.http.ResponseEntity.(java.lang.Object, org.springframework.http.HttpStatus)'

对应的pom.xml配置如下:

<?xml version="1.0" encoding="UTF-8"?>
4.0.0
core-service
core-service
1.0.0
jar
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.0.11</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>17</java.version>
    <spring-cloud.version>2021.0.3</spring-cloud.version>
    <failOnMissingWebXml>false</failOnMissingWebXml>
    
    <sonar.login>cfc0f7400efa552eff5494d65891e7ad18f268ed</sonar.login>
    <sonar.projectKey>core-service</sonar.projectKey>
    <sonar.projectName>core-service</sonar.projectName>
    <sonar.projectVersion>1.0</sonar.projectVersion>
    <sonar.sources>src/main/java</sonar.sources>
    <sonar.sourceEncoding>UTF-8</sonar.sourceEncoding>
    <sonar.branch.name>Build.SourceBranchName</sonar.branch.name>
    <sonar.branch.longLivedBranches.regex>Build.SourceBranchName</sonar.branch.longLivedBranches.regex>
    <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
    <jacoco.version>0.8.10</jacoco.version>
    <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
    <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
    <sonar.jacoco.reportPath>target/jacoco.exec</sonar.jacoco.reportPath>
    <sonar.java.binaries>target</sonar.java.binaries>
    <sonar.language>java</sonar.language>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
    <!-- <sonar.coverage.exclusions>**/QueryConstant.java</sonar.coverage.exclusions> -->
</properties>
<repositories>
    <repository>
        <id>datanucleus</id>
        <url>http://www.datanucleus.org/downloads/maven2/</url>
    </repository>
    <repository>
        <id>clojars</id>
        <url>http://clojars.org/repo/</url>
    </repository>
    <repository>
        <id>central</id>
        <url>http://repo1.maven.org/maven2/</url>
    </repository>
    <repository>
        <id>hortonworks</id>
        <name>hortonworks repo</name>
        <url>http://repo.hortonworks.com/content/groups/public</url>
    </repository>
</repositories>
<dependencies>
    <!-- spring dependency -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>6.0.12</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api -->
    <dependency>
        <groupId>jakarta.servlet</groupId>
        <artifactId>jakarta.servlet-api</artifactId>
        <version>6.0.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-sleuth</artifactId>
    </dependency>
    <!-- spring dependency end -->
    <!-- Apache common utility for logs -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.13.0</version>
    </dependency>
    <!-- Apache common utility end -->
    <!-- Lombok Dependency -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>
    <!-- JDBC dependency end -->
    <!-- JWT -->
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
        <version>0.9.0</version>
    </dependency>
    <dependency>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${jacoco.version}</version>
    </dependency>
    <!-- JWT end -->
    <!-- NGO Common Library -->
    <!-- NGO Common Library end -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>3.0.0</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>3.0.0</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-ui</artifactId>
        <version>1.5.4</version>
    </dependency>
    <!-- exclude junit 4 -->
    <!-- junit 5 -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-library</artifactId>
        <version>1.3</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-feign</artifactId>
        <version>1.4.7.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bootstrap</artifactId>
    </dependency>
    <dependency>
        <groupId>io.github.classgraph</groupId>
        <artifactId>classgraph</artifactId>
        <version>4.8.139</version>
    </dependency>
</dependencies>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.yaml</groupId>
            <artifactId>snakeyaml</artifactId>
            <version>2.0</version>
        </dependency>
    </dependencies>
</dependencyManagement>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <finalName>core-service</finalName>
                <executable>true</executable>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>${jacoco.version}</version>
            <executions>
                <execution>
                    <id>jacoco-initialize</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <execution>
                    <id>jacoco-site</id>
                    <phase>package</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
<profiles>
    <profile>
        <id>local</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <spring.profiles.active>local</spring.profiles.active>
        </properties>
    </profile>
    <profile>
        <id>dev</id>
        <properties>
            <spring.profiles.active>dev</spring.profiles.active>
        </properties>
    </profile>
    <profile>
        <id>replica</id>
        <properties>
            <spring.profiles.active>replica</spring.profiles.active>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <spring.profiles.active>prod</spring.profiles.active>
        </properties>
    </profile>
</profiles>

问题原因

这个报错是依赖版本不兼容导致的核心冲突:

  1. 声明使用Spring Boot 3.1.1,但parent仍为3.0.11,版本不一致引发依赖混乱
  2. Spring Cloud 2021.0.3仅兼容Spring Boot 2.6.x-2.7.x,完全不支持Spring Boot 3.x
  3. 手动指定的spring-web 6.0.12与Spring Boot 3.1.1自带的Spring 6.0.13版本不匹配
  4. spring-cloud-starter-feign 1.4.7是老旧版本,属于Spring Cloud Edgware,无法适配Spring 6和Boot 3

解决步骤

1. 统一Spring Boot版本

修改parent版本为3.1.1:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.1.1</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

2. 升级Spring Cloud到兼容版本

Spring Boot 3.1.x对应Spring Cloud 2022.0.4(Kilburn),修改版本属性:

<spring-cloud.version>2022.0.4</spring-cloud.version>

3. 移除手动指定的spring-web依赖

Spring Boot starter会自动管理spring-web版本,删除这段冗余配置:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>6.0.12</version>
</dependency>

4. 替换Feign依赖

旧的spring-cloud-starter-feign已被弃用,改用Spring Cloud OpenFeign:
删除旧依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-feign</artifactId>
    <version>1.4.7.RELEASE</version>
</dependency>

添加新的OpenFeign依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

5. 移除SpringFox依赖

SpringFox 3.0.0不兼容Spring Boot 3.x,且已有springdoc-openapi,直接删除:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>3.0.0</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>3.0.0</version>
    <scope>compile</scope>
</dependency>

6. 升级springdoc-openapi到兼容版本

springdoc-openapi 1.5.4不支持Spring Boot 3.x,替换为适配版本:

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.2.0</version>
</dependency>

7. 清理依赖并重新构建

执行Maven命令清理旧依赖、更新快照并重新构建:

mvn clean install -U

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 05:18:12