diff --git a/src/main/java/io/lettuce/core/resource/AddressResolverGroupProvider.java b/src/main/java/io/lettuce/core/resource/AddressResolverGroupProvider.java index e77c4042e4..effa2e5051 100644 --- a/src/main/java/io/lettuce/core/resource/AddressResolverGroupProvider.java +++ b/src/main/java/io/lettuce/core/resource/AddressResolverGroupProvider.java @@ -29,11 +29,10 @@ class AddressResolverGroupProvider { static { boolean dnsResolverAvailable = LettuceClassUtils.isPresent("io.netty.resolver.dns.DnsAddressResolverGroup"); - // create addressResolverGroup instance via Supplier to avoid NoClassDefFoundError. AddressResolverGroup group; if (dnsResolverAvailable) { logger.debug("Starting with netty's non-blocking DNS resolver library"); - group = AddressResolverGroupProvider.defaultDnsAddressResolverGroup(); + group = DefaultDnsAddressResolverGroupWrapper.INSTANCE; } else { logger.debug("Starting without optional netty's non-blocking DNS resolver library"); group = DefaultAddressResolverGroup.INSTANCE; @@ -51,10 +50,14 @@ static AddressResolverGroup addressResolverGroup() { return ADDRESS_RESOLVER_GROUP; } - private static AddressResolverGroup defaultDnsAddressResolverGroup() { - return new DnsAddressResolverGroup(new DnsNameResolverBuilder().channelType(Transports.datagramChannelClass()) - .socketChannelType(Transports.socketChannelClass().asSubclass(SocketChannel.class)) - .cnameCache(new DefaultDnsCnameCache()).resolveCache(new DefaultDnsCache())); + // Wraps DnsAddressResolverGroup to avoid NoClassDefFoundError. + private static class DefaultDnsAddressResolverGroupWrapper { + + static AddressResolverGroup INSTANCE = new DnsAddressResolverGroup( + new DnsNameResolverBuilder().channelType(Transports.datagramChannelClass()) + .socketChannelType(Transports.socketChannelClass().asSubclass(SocketChannel.class)) + .cnameCache(new DefaultDnsCnameCache()).resolveCache(new DefaultDnsCache())); + } }