spring boot 2.0.0由于版本不匹配导致的NoSuchMethodError问题解析

Posted 学无止境

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot 2.0.0由于版本不匹配导致的NoSuchMethodError问题解析相关的知识,希望对你有一定的参考价值。

spring boot升级到2.0.0以后,项目突然报出 NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.<init> 异常,

跟踪源代码无果的情况下。突然想到有可能是spring boot 和 spring cloud版本不匹配导致的。
于是,上官网看spring cloud的依赖,首先看Edgware.SR2版本的依赖,可以看出Edgware.SR2依赖是1.5.X版本

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.10.RELEASE</version>
</parent>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Edgware.SR2</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

再看Finchley版本的依赖,可以看出Finchley依赖的是2.0.0版本

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.RELEASE</version>
</parent>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Finchley.BUILD-SNAPSHOT</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

查看官网目前最新的Finchley版本是Finchley.M8,所以对于使用spring boot2.0.0的朋友,只要将对应的spring cloud切换为Finchley.M8版本,即可解决SpringApplicationBuilder.<init>报出NoSuchMethodError的问题。下面给出大家一个spring boot版本和spring cloud版本的匹配关系:

Spring CloudSpring Boot
Finchley 兼容Spring Boot 2.0.x,不兼容Spring Boot 1.5.x
Dalston和Edgware 兼容Spring Boot 1.5.x,不兼容Spring Boot 2.0.x
Camden 兼容Spring Boot 1.4.x,也兼容Spring Boot 1.5.x
Brixton 兼容Spring Boot 1.3.x,也兼容Spring Boot 1.4.x
Angel 兼容Spring Boot 1.2.x

只要按照上述表格做spring boot和spring cloud的关系匹配,就不会出现该报错了。

以上是关于spring boot 2.0.0由于版本不匹配导致的NoSuchMethodError问题解析的主要内容,如果未能解决你的问题,请参考以下文章

129. Spring Boot动态修改logback框架日志级别(任意版本)

Springboot2.x整合logback slf4j

Spring Boot 年前最后一个版本发布,一招解决 Log4j2Logback 漏洞!!

Spring Boot:Spring Boot整合Logback和PageHelper

Spring Boot 年前最后一个版本发布,一招解决 Log4j2Logback 漏洞!!

不能在 Spring Boot 2(版本 2.0.0.M7)中包含 Prometheus 指标