报错如下:
***************************
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:597)
The following method did not exist:
reactor.netty.resources.ConnectionProvider.elastic(Ljava/lang/String;Ljava/time/Duration;)Lreactor/netty/resources/ConnectionProvider;
The method's class, reactor.netty.resources.ConnectionProvider, is available from the following locations:
jar:file:/Users/lengleng/env/repository/io/projectreactor/netty/reactor-netty/0.9.3.RELEASE/reactor-netty-0.9.3.RELEASE.jar!/reactor/netty/resources/ConnectionProvider.class
It was loaded from the following location:
file:/Users/lengleng/env/repository/io/projectreactor/netty/reactor-netty/0.9.3.RELEASE/reactor-netty-0.9.3.RELEASE.jar
Action:
Correct the classpath of your application so that it contains a single, compatible version of reactor.netty.resources.ConnectionProvider
问题排查
如上日志涉及到 reactor-netty 依赖版本的问题
--------------------------- ---------------------------
| Spring Boot 2.2.3.RELEASE | | Spring Boot 2.2.2.RELEASE |
------------- ------------- ------------- -------------
| |
-----------------v---------------- -----------------v----------------
|spring-boot-starter-reactor-netty | |spring-boot-starter-reactor-netty |
| 2.2.3.RELEASE | | 2.2.2.RELEASE |
----------------- ---------------- ----------------- ----------------
| |
------- -------- ------- --------
| reactor-netty | | reactor-netty |
| 0.9.3.RELEASE | | 0.9.2.RELEASE |
---------------- ----------------
我起初选用的springboot是2.2.2的springcloud是Hoxton.SR8的。springcloud是当时最新的版本,但是springcloud推荐的springboot版本不是2.2.2。所以这直接导致了netty启动失败。起初我不知道是springboot和springcloud版本冲突的问题,在网上查阅大量资料之后才发现是这两个版本冲突。然后将springcloud版本改为SR1就可以了。当然根据官网推荐的版本也是可以的。所以大家在写父类配置文件的时候一定要谨慎。一定要到官网看一下springcloud推荐的springboot的版本。