diff --git a/resolver-dns/src/main/java/io/netty/resolver/dns/DnsNameResolver.java b/resolver-dns/src/main/java/io/netty/resolver/dns/DnsNameResolver.java index 7e037c34d1..7bb5f2436d 100644 --- a/resolver-dns/src/main/java/io/netty/resolver/dns/DnsNameResolver.java +++ b/resolver-dns/src/main/java/io/netty/resolver/dns/DnsNameResolver.java @@ -178,14 +178,19 @@ public class DnsNameResolver extends InetNameResolver { @SuppressWarnings("unchecked") private static List getSearchDomainsHack() throws Exception { - // This code on Java 9+ yields a warning about illegal reflective access that will be denied in - // a future release. There doesn't seem to be a better way to get search domains for Windows yet. - Class configClass = Class.forName("sun.net.dns.ResolverConfiguration"); - Method open = configClass.getMethod("open"); - Method nameservers = configClass.getMethod("searchlist"); - Object instance = open.invoke(null); + // Only try if not using Java9 and later + // See https://github.com/netty/netty/issues/9500 + if (PlatformDependent.javaVersion() < 9) { + // This code on Java 9+ yields a warning about illegal reflective access that will be denied in + // a future release. There doesn't seem to be a better way to get search domains for Windows yet. + Class configClass = Class.forName("sun.net.dns.ResolverConfiguration"); + Method open = configClass.getMethod("open"); + Method nameservers = configClass.getMethod("searchlist"); + Object instance = open.invoke(null); - return (List) nameservers.invoke(instance); + return (List) nameservers.invoke(instance); + } + return Collections.emptyList(); } private static final DatagramDnsResponseDecoder DATAGRAM_DECODER = new DatagramDnsResponseDecoder() {