***************************
APPLICATION FAILED TO START
***************************
Description:
An attempt was made to call a method that does not exist. The attempt was made from the following location:
org.springframework.cloud.gateway.config.GatewayAutoConfiguration$NettyConfiguration.gatewayHttpClient(GatewayAutoConfiguration.java:622)
The following method did not exist:
reactor.netty.resources.ConnectionProvider.elastic(Ljava/lang/String;Ljava/time/Duration;Ljava/time/Duration;)Lreactor/netty/resources/ConnectionProvider;
The method's class, reactor.netty.resources.ConnectionProvider, is available from the following locations:
jar:file:/C:/Users/K/.m2/repository/io/projectreactor/netty/reactor-netty/0.9.2.RELEASE/reactor-netty-0.9.2.RELEASE.jar!/reactor/netty/resources/ConnectionProvider.class
It was loaded from the following location:
file:/C:/Users/K/.m2/repository/io/projectreactor/netty/reactor-netty/0.9.2.RELEASE/reactor-netty-0.9.2.RELEASE.jar
Action:
Correct the classpath of your application so that it contains a single, compatible version of reactor.netty.resources.ConnectionProvider
解决方法
- 先看是哪个类少了哪个方法
- 去mavenrepository仓库找一个有这个方法的版本替换上去
搞定
举例:
并且由控制台提示可以看到,这个ConnectionProvider是在reactor-netty-0.9.2.RELEASE.jar中
接下来我们去mavenrepository仓库找一个其他版本(最好找一个大版本一致,并且star多的,一般就可以了)
于是我选中了0.9.12版本
接下来修改POM文件
<!-- Gateway -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
<exclusions>
<exclusion> <!-- 注:一定要把旧的包排除掉,再引入新的包 -->
<groupId>io.projectreactor.netty</groupId>
<artifactId>reactor-netty</artifactId>
</exclusion>
<exclusion> <!-- 由于我发现排除了netty包,还会有一个类,也是相同的问题,即缺少了某个方法,没关系,我们按照上面的步骤再来一次 -->
<groupId>org.springframework</groupId>
<artifactId>spring-webflux</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 解决jar包不一致问题 -->
<dependency>
<groupId>io.projectreactor.netty</groupId>
<artifactId>reactor-netty</artifactId>
<version>0.9.12.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webflux</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
最后,启动spring-cloud-gateway
成功!
最新补充:
上面的0.9.12版本升的太高了,导致出现了一些新问题,所以将版本修改为0.9.7解决了问题