Spring Api-Gateway: (M1) java.lang.UnsatisfiedLinkError: no netty_resolver_dns_native_macos_aarch_64

23.5k views Asked by At

Just to clearify this only occurs on M1 Mac, the intel version doesn't seem to have this problem.

JDK 17

openjdk version "17.0.1" 2021-10-19
OpenJDK Runtime Environment Homebrew (build 17.0.1+1)
OpenJDK 64-Bit Server VM Homebrew (build 17.0.1+1, mixed mode, sharing)

# List of all JDK
Matching Java Virtual Machines (2):
    17.0.1 (arm64) "Homebrew" - "OpenJDK 17.0.1" /opt/homebrew/Cellar/openjdk/17.0.1_1/libexec/openjdk.jdk/Contents/Home
    16.0.2 (arm64) "Azul Systems, Inc." - "Zulu 16.32.15" /Users/xxxxxx/Library/Java/JavaVirtualMachines/azul-16.0.2/Contents/Home
/opt/homebrew/Cellar/openjdk/17.0.1_1/libexec/openjdk.jdk/Contents/Home

Project Diagram

enter image description here

Problem:

java.lang.UnsatisfiedLinkError exception is thrown when trying to access one of the microservice through API-Gateway. For example, http://localhost:8082/API-USER/users/status/ok will throw this exception.

The return value is correct, API-Gateway continues to run despite the annoying exception.

Caused by: java.lang.UnsatisfiedLinkError: failed to load the required native library
    at io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider.ensureAvailability(MacOSDnsServerAddressStreamProvider.java:110) ~[netty-resolver-dns-classes-macos-4.1.75.Final.jar:4.1.75.Final]
Caused by: java.lang.UnsatisfiedLinkError: failed to load the required native library

    at io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider.<init>(MacOSDnsServerAddressStreamProvider.java:120) ~[netty-resolver-dns-classes-macos-4.1.75.Final.jar:4.1.75.Final]
    ... 202 common frames omitted
Caused by: java.lang.UnsatisfiedLinkError: could not load a native library: netty_resolver_dns_native_macos_aarch_64
    at io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:224) ~[netty-common-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider.loadNativeLibrary(MacOSDnsServerAddressStreamProvider.java:92) ~[netty-resolver-dns-classes-macos-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider.<clinit>(MacOSDnsServerAddressStreamProvider.java:77) ~[netty-resolver-dns-classes-macos-4.1.75.Final.jar:4.1.75.Final]
    at java.base/java.lang.Class.forName0(Native Method) ~[na:na]
Caused by: java.lang.UnsatisfiedLinkError: could not load a native library: netty_resolver_dns_native_macos_aarch_64

    at java.base/java.lang.Class.forName(Class.java:467) ~[na:na]
    at io.netty.resolver.dns.DnsServerAddressStreamProviders$1.run(DnsServerAddressStreamProviders.java:50) ~[netty-resolver-dns-4.1.75.Final.jar:4.1.75.Final]
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:318) ~[na:na]
    at io.netty.resolver.dns.DnsServerAddressStreamProviders.<clinit>(DnsServerAddressStreamProviders.java:46) ~[netty-resolver-dns-4.1.75.Final.jar:4.1.75.Final]
    ... 196 common frames omitted
    Suppressed: java.lang.UnsatisfiedLinkError: could not load a native library: netty_resolver_dns_native_macos
        at io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:224) ~[netty-common-4.1.75.Final.jar:4.1.75.Final]
        at io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider.loadNativeLibrary(MacOSDnsServerAddressStreamProvider.java:95) ~[netty-resolver-dns-classes-macos-4.1.75.Final.jar:4.1.75.Final]
        ... 202 common frames omitted
    Caused by: java.io.FileNotFoundException: META-INF/native/libnetty_resolver_dns_native_macos.jnilib
        at io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:166)
    Caused by: java.io.FileNotFoundException: META-INF/native/libnetty_resolver_dns_native_macos.jnilib

        ... 203 common frames omitted
        Suppressed: java.lang.UnsatisfiedLinkError: no netty_resolver_dns_native_macos in java.library.path: /Users/erichuang/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
            at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2429)
            at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:818)
            at java.base/java.lang.System.loadLibrary(System.java:1989)
            at io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38)
            at io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:376)
            at io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:146)
            ... 203 common frames omitted
            Suppressed: java.lang.UnsatisfiedLinkError: no netty_resolver_dns_native_macos in java.library.path: /Users/erichuang/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
                at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2429)
                at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:818)
                at java.base/java.lang.System.loadLibrary(System.java:1989)
                at io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38)
                at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
                at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.base/java.lang.reflect.Method.invoke(Method.java:568)
                at io.netty.util.internal.NativeLibraryLoader$1.run(NativeLibraryLoader.java:410)
                at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
                at io.netty.util.internal.NativeLibraryLoader.loadLibraryByHelper(NativeLibraryLoader.java:402)
                at io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:368)
                ... 204 common frames omitted
Caused by: java.io.FileNotFoundException: META-INF/native/libnetty_resolver_dns_native_macos_aarch_64.jnilib
    at io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:166) ~[netty-common-4.1.75.Final.jar:4.1.75.Final]
    ... 203 common frames omitted
    Suppressed: java.lang.UnsatisfiedLinkError: no netty_resolver_dns_native_macos_aarch_64 in java.library.path: /Users/erichuang/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
        at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2429) ~[na:na]
Caused by: java.io.FileNotFoundException: META-INF/native/libnetty_resolver_dns_native_macos_aarch_64.jnilib

        at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:818) ~[na:na]
        at java.base/java.lang.System.loadLibrary(System.java:1989) ~[na:na]
        at io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38) ~[netty-common-4.1.75.Final.jar:4.1.75.Final]
        at io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:376) ~[netty-common-4.1.75.Final.jar:4.1.75.Final]
        at io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:146) ~[netty-common-4.1.75.Final.jar:4.1.75.Final]
        ... 203 common frames omitted
        Suppressed: java.lang.UnsatisfiedLinkError: no netty_resolver_dns_native_macos_aarch_64 in java.library.path: /Users/erichuang/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
            at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2429)
            at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:818)
            at java.base/java.lang.System.loadLibrary(System.java:1989)
            at io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38)
            at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
            at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.base/java.lang.reflect.Method.invoke(Method.java:568)
            at io.netty.util.internal.NativeLibraryLoader$1.run(NativeLibraryLoader.java:410)
            at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
            at io.netty.util.internal.NativeLibraryLoader.loadLibraryByHelper(NativeLibraryLoader.java:402)
            at io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:368)
            ... 204 common frames omitted

Question

Does any one know how to mitigate this error?

I tired...

Both of these links suggested to add netty-tcnative-boringssl-static dependency but that didn't work either...

API-Gateway : build.gradle

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
    implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    // https://mvnrepository.com/artifact/io.netty/netty-tcnative-boringssl-static
    implementation group: 'io.netty', name: 'netty-tcnative-boringssl-static', version: '2.0.51.Final'


}

Thanks for helping

7

There are 7 answers

1
Eric Huang On BEST ANSWER

Found an issue on GitHub: https://github.com/netty/netty/issues/11020

Get the newest version: https://mvnrepository.com/artifact/io.netty/netty-resolver-dns-native-macos

Still doesn't explain why this problem occurs, but here it is that fixed the issue for me:

Maven

        <dependency>
          <groupId>io.netty</groupId>
          <artifactId>netty-resolver-dns-native-macos</artifactId>
          <version>XXX</version>
          <classifier>osx-aarch_64</classifier>
        </dependency>

Gradle

implementation group: 'io.netty', name: 'netty-resolver-dns-native-macos', version: 'xxx', classifier: 'osx-aarch_64'
2
Alphabet18 On

You must add the proper classifier to the to the netty-resolver-dns-native-macos artifact, so that the proper version of the native library is loaded:

implementation("io.netty:netty-resolver-dns-native-macos:4.1.75.Final") {
    artifact {
        classifier = "osx-aarch_64"
    }
}
0
Nenad Jevdjenic On

For Maven the workaround looks like following:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
        <exclusions>
            <exclusion>
                <groupId>io.netty</groupId>
                <artifactId>netty-resolver-dns-native-macos</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-resolver-dns-native-macos</artifactId>
        <version>4.1.73.Final</version>
        <classifier>osx-aarch_64</classifier>
    </dependency>

First exclude the referenced library. And then add it explicit with the classifier. Worked on M2 chip MacBook Pro 2022.

0
Mihai On

Edited

After trying the solution above and not working for me, and fixed with a stupid long solution, I've realised that my server starts with Tomcat because of a transitive dependency that introduced org.apache.tomcat.embed:tomcat-embed-core. After fixing that, including the dependency:

<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-resolver-dns-native-macos</artifactId>
    <classifier>osx-aarch_64</classifier>
</dependency>

just works. I am not deleting this post for other people that see the exception, but don't observe that their server starts with Tomcat.

For me it was not enough to add the dependency as in the accepted answer. I am using Spring Boot and it still complains about missing:

Caused by: java.io.FileNotFoundException: META INF/native/libnetty_resolver_dns_native_macos_aarch_64.jnilib

I needed to copy the

/target/asr-reactive-example-1.0-SNAPSHOT.jar/BOOT-INF/classes/netty-resolver-dns-native-macos-4.1.75.Final-osx-aarch_64.jar/META-INF/native

folder, to:

/target/asr-reactive-example-1.0-SNAPSHOT.jar/META-INF

which contains the file: libnetty_resolver_dns_native_macos_aarch_64.jnilib

For sure it can be automated with maven, but I don't know if this is the solution.

Edited:

Well, I don't know why the accepted answer works for other people, but for me it was really annoying to see that error at startup and I didn't want to disable the logging for MacOSDnsServerAddressStreamProvider or who is logging the error.

After I've entered with the debugger in netty and jdk, I've found that it tries load it by using System.loadLibrary():

load with System

which is searching in:

System search

and:

User search

Of course that it is not there. Then it tries to look for it in classpath but it fails:

classpath1

classpath2

After I've copied the library to META-INF/native, then it founds the library by using the classpath (after failing with the System/User locations). Then copies the library to the root of the working directory and finally succeed because System.loadLibrary() founds it in ".":

found-it

Now, for auto-copy the file I've made some acrobatics:

set some version:

<properties>
    <netty.dns.native.resolver.version>4.1.79.Final</netty.dns.native.resolver.version>
</properties>

Then include the dependency:

<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-resolver-dns-native-macos</artifactId>
    <version>${netty.dns.native.resolver.version}</version>
    <classifier>osx-aarch_64</classifier>
</dependency>

Then copy the native library:

<plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-dependency-plugin</artifactId>
      <version>3.3.0</version>
      <executions>
      <execution>
            <id>unpack</id>
            <phase>generate-sources</phase>
            <goals>
                  <goal>unpack</goal>
            </goals>
            <configuration>
                  <skip>${skip.aarch64.copy}</skip>
                  <artifactItems>
                  <artifactItem>
                        <groupId>io.netty</groupId>
                        <artifactId>netty-resolver-dns-native-macos</artifactId>
                        <version>${netty.dns.native.resolver.version}</version>
                        <type>jar</type>
                        <classifier>osx-aarch_64</classifier>
                        <overWrite>false</overWrite>
                        <includes>**/native/*.jnilib</includes>
                  </artifactItem>
                  </artifactItems>
                  <outputDirectory>${project.build.directory}/classes</outputDirectory>
                  <overWriteReleases>true</overWriteReleases>
                  <overWriteSnapshots>true</overWriteSnapshots>
                  <overWriteIfNewer>true</overWriteIfNewer>
            </configuration>
      </execution>
      </executions>
</plugin>

but only if os architecture is ARM 64 (see the <skip>${skip.aarch64.copy}</skip>):

<plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-antrun-plugin</artifactId>
      <version>1.8</version>
      <executions>
            <execution>
                  <phase>validate</phase>
                  <goals>
                  <goal>run</goal>
                  </goals>
                  <configuration>
                  <exportAntProperties>true</exportAntProperties>
                  <target>
                        <condition property="skip.aarch64.copy" value="true" else="false">
                              <not>
                              <equals arg1="${os.detected.arch}" arg2="aarch_64"/>
                              </not>
                        </condition>
                        <echo message="Skip AARCH-64: ${skip.aarch64.copy}"/>
                  </target>
                  </configuration>
            </execution>
      </executions>
</plugin>

and for "os.detected.arch" property from above i've used:

<build>
      <extensions>
          <extension>
              <groupId>kr.motd.maven</groupId>
              <artifactId>os-maven-plugin</artifactId>
              <version>1.7.0</version>
          </extension>
      </extensions>
......
</build>

I know. Veeeeery complicated solution. If anyone have other solution, please post it here.

0
Bilal Demir On

You can try to add this config in application.yml:

management:
  endpoints:
    jmx:
      exposure:
        exclude: health,info

In my logs, it appears that the actuator is calling the netty library. Those working locally can turn off the health check for the actuator in application.yml with this config to avoid creating diff in the pom.

Important! Do not forget to open actuator in other profiles.

---
spring:
  config:
    activate:
      on-profile: prod
management:
  endpoints:
    jmx:
      exposure:
        include: health,info

Exception message:

2024-02-28 01:12:40.910 ERROR 24158 --- [3)] 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.

java.lang.reflect.InvocationTargetException: null
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na]
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[na:na]
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[na:na]
    at io.netty.resolver.dns.DnsServerAddressStreamProviders.<clinit>(DnsServerAddressStreamProviders.java:64) ~[netty-resolver-dns-4.1.77.Final.jar:4.1.77.Final]
    at io.netty.resolver.dns.DnsNameResolverBuilder.<init>(DnsNameResolverBuilder.java:60) ~[netty-resolver-dns-4.1.77.Final.jar:4.1.77.Final]
    at reactor.netty.transport.NameResolverProvider.newNameResolverGroup(NameResolverProvider.java:479) ~[reactor-netty-core-1.0.19.jar:1.0.19]
    at reactor.netty.tcp.TcpResources.getOrCreateDefaultResolver(TcpResources.java:315) ~[reactor-netty-core-1.0.19.jar:1.0.19]
    at reactor.netty.http.HttpResources.getOrCreateDefaultResolver(HttpResources.java:152) ~[reactor-netty-http-1.0.19.jar:1.0.19]
    at reactor.netty.http.client.HttpClientConfig.defaultAddressResolverGroup(HttpClientConfig.java:383) ~[reactor-netty-http-1.0.19.jar:1.0.19]
    at reactor.netty.transport.ClientTransportConfig.resolverInternal(ClientTransportConfig.java:224) ~[reactor-netty-core-1.0.19.jar:1.0.19]
    at reactor.netty.http.client.HttpClientConfig.resolverInternal(HttpClientConfig.java:437) ~[reactor-netty-http-1.0.19.jar:1.0.19]
    at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect.lambda$subscribe$0(HttpClientConnect.java:265) ~[reactor-netty-http-1.0.19.jar:1.0.19]
    at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:58) ~[reactor-core-3.4.18.jar:3.4.18]
    at reactor.core.publisher.FluxRetryWhen.subscribe(FluxRetryWhen.java:77) ~[reactor-core-3.4.18.jar:3.4.18]
    at reactor.core.publisher.MonoRetryWhen.subscribeOrReturn(MonoRetryWhen.java:46) ~[reactor-core-3.4.18.jar:3.4.18]
    at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:57) ~[reactor-core-3.4.18.jar:3.4.18]
    at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect.subscribe(HttpClientConnect.java:272) ~[reactor-netty-http-1.0.19.jar:1.0.19]
    at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) ~[reactor-core-3.4.18.jar:3.4.18]
    at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.4.18.jar:3.4.18]
    at reactor.core.publisher.Mono.subscribe(Mono.java:4400) ~[reactor-core-3.4.18.jar:3.4.18]
    at reactor.core.publisher.Mono.block(Mono.java:1706) ~[reactor-core-3.4.18.jar:3.4.18]
    at org.springframework.boot.actuate.autoconfigure.health.HealthEndpointConfiguration$AdaptedReactiveHealthContributors$1.getHealth(HealthEndpointConfiguration.java:161) ~[spring-boot-actuator-autoconfigure-2.7.0-20220519.113841-421.jar:2.7.0-SNAPSHOT]
    at org.springframework.boot.actuate.health.HealthEndpoint.getHealth(HealthEndpoint.java:77) ~[spring-boot-actuator-2.7.0-20220519.113841-421.jar:2.7.0-SNAPSHOT]
    at org.springframework.boot.actuate.health.HealthEndpoint.getHealth(HealthEndpoint.java:40) ~[spring-boot-actuator-2.7.0-20220519.113841-421.jar:2.7.0-SNAPSHOT]
    at org.springframework.boot.actuate.health.HealthEndpointSupport.getContribution(HealthEndpointSupport.java:130) ~[spring-boot-actuator-2.7.0-20220519.113841-421.jar:2.7.0-SNAPSHOT]
    at org.springframework.boot.actuate.health.HealthEndpointSupport.getAggregateContribution(HealthEndpointSupport.java:141) ~[spring-boot-actuator-2.7.0-20220519.113841-421.jar:2.7.0-SNAPSHOT]
    at org.springframework.boot.actuate.health.HealthEndpointSupport.getContribution(HealthEndpointSupport.java:126) ~[spring-boot-actuator-2.7.0-20220519.113841-421.jar:2.7.0-SNAPSHOT]
    at org.springframework.boot.actuate.health.HealthEndpointSupport.getHealth(HealthEndpointSupport.java:95) ~[spring-boot-actuator-2.7.0-20220519.113841-421.jar:2.7.0-SNAPSHOT]
    at org.springframework.boot.actuate.health.HealthEndpointSupport.getHealth(HealthEndpointSupport.java:66) ~[spring-boot-actuator-2.7.0-20220519.113841-421.jar:2.7.0-SNAPSHOT]
    at org.springframework.boot.actuate.health.HealthEndpoint.health(HealthEndpoint.java:71) ~[spring-boot-actuator-2.7.0-20220519.113841-421.jar:2.7.0-SNAPSHOT]
    at org.springframework.boot.actuate.health.HealthEndpoint.health(HealthEndpoint.java:61) ~[spring-boot-actuator-2.7.0-20220519.113841-421.jar:2.7.0-SNAPSHOT]
0
Zane On

I use mac M1, I solved this problem by changing jdk.

  • before: zulu jdk ❌
  • after: oracle jdk ✅
0
rbento On

On a Macbook Pro with an Apple M1 Pro chip:

Gradle - Groovy DSL

runtimeOnly 'io.netty:netty-resolver-dns-native-macos:4.1.80.Final:osx-aarch_64'

Gradle - Kotlin DSL

runtimeOnly("io.netty:netty-resolver-dns-native-macos:4.1.80.Final:osx-aarch_64")

Maven

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

See newer versions of netty-resolver-dns-native-macos on mvnrepository.com