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版本spring

<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版本spring-boot

<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版本的匹配關係:ui

Spring Cloud Spring 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的關係匹配,就不會出現該報錯了。code

相關文章
相關標籤/搜索