图图
发布于 2024-02-19 / 58 阅读 / 0 评论 / 0 点赞

macOS m1 运行Unable to load io.netty.resolver.dns.macos错误处理

配置

公司的java项目,本地mac首次运行出现异常,环境如下

Apple M1

macOS14.1.2

Maven 3.6.3

Java version: 1.8.0_333

Spring Boot 2.7.2

先说问题

i.n.r.d.DnsServerAddressStreamProviders : Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider, fallback to system defaults. This may result in incorrect DNS resolutions on MacOS.

...

Suppressed: java.lang.UnsatisfiedLinkError: no netty_resolver_dns_native_macos_x86_64 in java.library.path

这里是控制台抛出的部分重要信息,这里就非常奇怪了,上面的错误我能理解,是redisson这个包需要依赖netty这个包解析dns,但是在macos出现了问题。错误信息我搜了一堆,都是让添加一下依赖

<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-resolver-dns-native-macos</artifactId>
    <version>4.1.75.Final</version>
    <classifier>osx-aarch_64</classifier>
    <scope>runtime</scope>
</dependency>

但是并没有解决问题,这里回到上面第二个信息非常重要,我发现源码使用的是netty_resolver_dns_native_macos_x86_64这个依赖,这里很奇怪了,我在检查一下系统信息

问题应该就出现在这里,我的系统是arm架构的,但是jdk还是用的x86的,所以上面第二个信息才会找x86的依赖,这里就跟我们的pom里面配置不一致。

解决问题

<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-resolver-dns-native-macos</artifactId>
    <version>4.1.75.Final</version>
    <classifier>osx-x86_64</classifier>
    <scope>runtime</scope>
</dependency>

重新加载一下项目,成功运行,解决问题,另一一种解决方案,不确定是什么原因,也能解决,顺便po出来

<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-resolver-dns-native-macos</artifactId>
    <version>4.1.75.Final</version>
    <classifier>osx-aarch_64</classifier>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>io.projectreactor.netty</groupId>
    <artifactId>reactor-netty-http</artifactId>
    <version>1.0.21</version>
</dependency>

新手java,这个后面的就看不太懂了,可能有错误的地方,欢迎指出,感谢