如何解决NoSuchMethodError:基于 ANT 的 Spring 项目中的 reactor.netty.http.client.HttpClient.option
我在使用 webClient 时遇到异常
Failed to instantiate [org.springframework.web.reactive.function.client.WebClient]: Factory method 'webClient' threw exception; nested exception is java.lang.NoSuchMethodError: reactor.netty.http.client.HttpClient.option(Lio/netty/channel/ChannelOption;Ljava/lang/Object;)Lreactor/netty/transport/Transport;
相关 jars
这是一个基于 ANT 的 SPRING 项目。 我没有收到任何编译错误。
这是我创建 webClient 的代码
WebClient webClient(ReactiveClientRegistrationRepository clientRegistrations ) {
HttpClient httpClient = HttpClient.create()
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS,5000)
.responseTimeout(Duration.ofMillis(5000))
.doOnConnected(conn ->
conn.addHandlerLast(new ReadTimeoutHandler(5000,TimeUnit.MILLISECONDS))
.addHandlerLast(new WriteTimeoutHandler(5000,TimeUnit.MILLISECONDS)));
ClientHttpConnector connector = new ReactorClientHttpConnector(httpClient);
InMemoryReactiveOAuth2AuthorizedClientService authorisedClient=new InMemoryReactiveOAuth2AuthorizedClientService(clientRegistrations);
ServerOAuth2AuthorizedClientExchangeFilterFunction oauth=new ServerOAuth2AuthorizedClientExchangeFilterFunction(new AuthorizedClientServiceReactiveOAuth2AuthorizedClientManager(clientRegistrations,authorisedClient));
oauth.setDefaultClientRegistrationId("id");
return WebClient.builder().baseUrl("sample URL")
.clientConnector(connector)
.filter(oauth)
.build();
}
id 和示例 URL 是我替换的值。 看起来像是一些 JAR 问题,但我添加了几乎所有我在研究此错误时发现的 JAR。
谢谢
解决方法
这取决于版本 Spring(和 Reactor Netty)。 在版本 5.2.x 和更高版本中,类 HttpClient 扩展了 ClientTransport - 在这种情况下,您的代码将起作用。 在早期版本中,documentation“提供”了这种实现:
HttpClient httpClient = HttpClient.create().tcpConfiguration(client -> client.option(ChannelOption.CONNECT_TIMEOUT_MILLIS,10000))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。