【Springboot】解决 MacOS M1 上 Netty 的 DNS 解析错误
2023-12-26 11:51:09
jwensh@2023.12.26
错误
-
使用 springboot2.7.18 上使用
spring-boot-starter-webflux
的WebClient
上使用 netty 的 connector 来进行 -
引用
implementation("org.springframework.boot:spring-boot-starter-webflux")
- 使用
import reactor.netty.http.client.HttpClient;
···
HttpClient httpClient = HttpClient.create()
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 10000);
WebClient webClient = builder.clone()
.defaultCookie("cookie-name", "cookie-value")
.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
.clientConnector(new ReactorClientHttpConnector(httpClient))
.build();
- 错误
2023-12-26 09:52:20.123 [restartedMain] ERROR i.n.resolver.dns.DnsServerAddressStreamProviders -
Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider,
fallback to system defaults. This may result in incorrect DNS resolutions on
MacOS. Check whether you have a dependency on 'io.netty:netty-resolver-dns-native-macos'.
Use DEBUG level to see the full stack: java.lang.UnsatisfiedLinkError: failed to load the required native library
是使用 Netty 库时遇到的 DNS 解析错误;此错误源于 Netty 无法访问本机 MacOS DNS 解析器。这样做的后果是可能出现不正确的 DNS 解析,这可能会导致应用程序中出现大量与网络相关的问题;
原因
Netty 使用本机代码与系统的 DNS 解析器交互以获得最佳性能。在 MacOS 上,尤其是使用 M1 芯片的系统上,可能会缺少所需的本机库,从而导致上述错误。
解决方案是显式提供此本机库。
解决方案
对于使用 Gradle 管理的项目,您需要在 build.gradle 文件中包含以下依赖项:
runtimeOnly("io.netty:netty-resolver-dns-native-macos:4.1.76.Final:osx-aarch_64")
参考
文章来源:https://blog.csdn.net/u013948858/article/details/135215862
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!