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

升级Spring和Spring Kafka后报NoSuchMethodError方法不存在错误如何解决

问题原因

该NoSuchMethodError属于典型的Java依赖版本冲突问题:Spring 5.1.x版本中ConfigurationClassBeanDefinitionReader$ConfigurationClassBeanDefinition类的setResolvedFactoryMethod方法签名和5.2.x版本不兼容,当前项目classpath内同时存在两个版本的Spring核心jar包,运行时加载了低版本的类,调用高版本修改后的方法就会触发该报错。

排查与解决方案
  • 第一步:定位冲突来源
    执行以下Maven命令查看依赖树,筛选Spring相关依赖的版本:
mvn dependency:tree | grep -A 10 -B 10 "org.springframework:"

绝大多数该场景下的冲突来源是springfox-swagger2:2.9.2,该版本默认传递依赖了低版本的Spring核心包,和你升级后的5.2.12.RELEASE版本不兼容。

  • 第二步:排除冲突的传递依赖
    修改swagger相关依赖配置,排除它自带的Spring传递依赖:
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
    <exclusions>
        <exclusion>
            <groupId>org.springframework</groupId>
            <artifactId>*</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
    <exclusions>
        <exclusion>
            <groupId>org.springframework</groupId>
            <artifactId>*</artifactId>
        </exclusion>
    </exclusions>
</dependency>
  • 第三步:统一锁定依赖版本
    在pom.xml中新增dependencyManagement配置,全局锁定Spring框架和Spring Kafka的版本,避免其他依赖引入冲突版本:
<dependencyManagement>
    <dependencies>
        <!-- 统一锁定Spring框架所有依赖版本 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-framework-bom</artifactId>
            <version>5.2.12.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- 锁定Spring Kafka版本 -->
        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
            <version>2.4.1.RELEASE</version>
        </dependency>
    </dependencies>
</dependencyManagement>
  • 可选优化:删除pom中冗余的spring-beans依赖,spring-boot-starter-web已经默认引入了该依赖,无需单独声明。
  • 第四步:验证修改
    重新执行依赖树命令,确认所有org.springframework组下的依赖版本都为5.2.12.RELEASE,重新打包启动项目即可解决报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:06:04