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