在 Apple Silicon M1 上,无法加载 MacOSDnsServerAddressStreamProvider,导致发生错误

首先

在KINTO Technologies中,作为开发设备,可以选择Windows、Mac。对于Mac来说,会提供配有英特尔芯片的MacBook Pro作为借用设备。

由于2021年发布了搭载Apple M1 Pro和M1 Max芯片的MacBook Pro,开发人员们对Apple Silicon M1在开发设备中的增加也充满了热切关注。

这是关于在进行Apple Silicon M1技术验证时遇到的错误的故事,这次开发设备的选择增加了。

事件

在KINTO Technologies的一些系统中,使用了Spring Boot 2.5.0。
这次进行技术验证的系统在测试代码中使用了Spring WebFlux来提高测试效率,以便使用外部服务的API部分。

Spring WebFlux在默认情况下使用Netty,但在Spring Boot 2.5.0中,如果没有指定版本,则会使用以下依赖关系:
io.netty:netty-resolver-dns-native-macos:4.1.63.Final。
由于这个版本不支持Apple Silicon M1,导致无法加载io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider,从而产生了错误。

ERROR io.netty.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.

处理

让我们将Spring Boot升级到最新版本。
2021年11月19日,Spring Boot 2.6发布了,但在检查依赖版本时,发现netty-resolver-dns-native-macos的版本为4.1.70.Final,并且默认使用适用于Apple Silicon M1的版本。

请指定依赖版本。
如果您正在使用生产环境中运行的系统,由于版本升级通常是计划性的,因此立即升级到最新的Spring Boot版本可能很困难。
在这种情况下,请指定netty-resolver-dns-native-macos的依赖版本。

dependencies {
    testImplementation 'io.netty:netty-resolver-dns-native-macos:4.1.70.Final:osx-aarch_64'
}

最终

中文翻译:按计划进行中间件的版本更新。

以下是本地化为中文的表述方式,只需要一种选项:

参考如下

广告
将在 10 秒后关闭
bannerAds