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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM