報錯表象:
當啟動SpringClud項目報錯:
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/core/env/EnvironmentCapable
或
java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.<init>([Ljava/lang/Object;)V
時,就要檢查 spring-boot-starter-parent 的版本和 spring-cloud-dependencies 的版本,這兩個版本中是否是 spring-boot-starter-parent 的版本太高了。
我的結論:
試過各種版本匹配,最后結論為若想要高版本的spring-cloud-dependencies例如Edgware.SR4,那么spring-boot-starter-parent 版本只能是1開頭的高版本,不能是2.X
以下兩個version版本經驗證,可以正常啟動SpringCloud
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.16.RELEASE</version> <relativePath/> </parent>
<!-- 使用dependencyManagement進行版本管理 --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Edgware.SR4</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>