3

Using vertx 4.0.0 with jdk 14. I'm getting the following exception when trying to make a REST request using the vertx web client:

15:56:48.294 [vert.x-eventloop-thread-0] ERROR io.vertx.core.impl.ContextImpl - Unhandled exception
java.lang.IllegalAccessError: class io.vertx.core.buffer.impl.VertxUnsafeHeapByteBuf cannot access its superclass io.netty.buffer.UnpooledUnsafeHeapByteBuf (io.vertx.core.buffer.impl.VertxUnsafeHeapByteBuf and io.netty.buffer.UnpooledUnsafeHeapByteBuf are in unnamed module of loader 'app')
        at java.lang.ClassLoader.defineClass1(Native Method) ~[?:?]
        at java.lang.ClassLoader.defineClass(ClassLoader.java:1017) ~[?:?]
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151) ~[?:?]
        at jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:821) ~[?:?]
        at jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:719) ~[?:?]
        at jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:642) ~[?:?]
        at jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:600) ~[?:?]
        at jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[?:?]
        at io.vertx.core.buffer.impl.VertxByteBufAllocator.<clinit>(VertxByteBufAllocator.java:20) ~[vertx-core-4.0.0.jar:4.0.0]
        at io.vertx.core.buffer.impl.BufferImpl.<init>(BufferImpl.java:64) ~[vertx-core-4.0.0.jar:4.0.0]
        at io.vertx.core.buffer.impl.BufferImpl.<init>(BufferImpl.java:60) ~[vertx-core-4.0.0.jar:4.0.0]
        at io.vertx.core.buffer.impl.BufferImpl.buffer(BufferImpl.java:38) ~[vertx-core-4.0.0.jar:4.0.0]
        at io.vertx.core.buffer.Buffer.buffer(Buffer.java:49) ~[vertx-core-4.0.0.jar:4.0.0]
        at io.vertx.ext.web.codec.impl.BodyCodecImpl$1.<init>(BodyCodecImpl.java:88) ~[vertx-web-common-4.0.0.jar:4.0.0]
        at io.vertx.ext.web.codec.impl.BodyCodecImpl.create(BodyCodecImpl.java:86) ~[vertx-web-common-4.0.0.jar:4.0.0]
        at io.vertx.ext.web.client.impl.HttpContext.handleReceiveResponse(HttpContext.java:427) ~[vertx-web-client-4.0.0.jar:4.0.0]
        at io.vertx.ext.web.client.impl.HttpContext.execute(HttpContext.java:338) ~[vertx-web-client-4.0.0.jar:4.0.0]
        at io.vertx.ext.web.client.impl.HttpContext.next(HttpContext.java:322) ~[vertx-web-client-4.0.0.jar:4.0.0]
        at io.vertx.ext.web.client.impl.HttpContext.fire(HttpContext.java:289) ~[vertx-web-client-4.0.0.jar:4.0.0]
        at io.vertx.ext.web.client.impl.HttpContext.receiveResponse(HttpContext.java:238) ~[vertx-web-client-4.0.0.jar:4.0.0]
        at io.vertx.ext.web.client.impl.HttpContext.lambda$null$13(HttpContext.java:564) ~[vertx-web-client-4.0.0.jar:4.0.0]
        at io.vertx.core.impl.future.FutureImpl$3.onSuccess(FutureImpl.java:125) ~[vertx-core-4.0.0.jar:4.0.0]
        at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:61) ~[vertx-core-4.0.0.jar:4.0.0]
        at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:180) ~[vertx-core-4.0.0.jar:4.0.0]
        at io.vertx.core.impl.future.PromiseImpl.tryComplete(PromiseImpl.java:23) ~[vertx-core-4.0.0.jar:4.0.0]
        at io.vertx.core.Promise.complete(Promise.java:66) ~[vertx-core-4.0.0.jar:4.0.0]
        at io.vertx.core.http.impl.HttpClientRequestImpl.handleResponse(HttpClientRequestImpl.java:350) ~[vertx-core-4.0.0.jar:4.0.0]
        at io.vertx.core.http.impl.HttpClientRequestBase.handleResponse(HttpClientRequestBase.java:185) ~[vertx-core-4.0.0.jar:4.0.0]
        at io.vertx.core.http.impl.HttpClientRequestBase.lambda$new$0(HttpClientRequestBase.java:71) ~[vertx-core-4.0.0.jar:4.0.0]
        at io.vertx.core.impl.EventLoopContext.emit(EventLoopContext.java:52) [vertx-core-4.0.0.jar:4.0.0]
        at io.vertx.core.impl.ContextImpl.emit(ContextImpl.java:294) [vertx-core-4.0.0.jar:4.0.0]
        at io.vertx.core.impl.EventLoopContext.emit(EventLoopContext.java:24) [vertx-core-4.0.0.jar:4.0.0]
        at io.vertx.core.http.impl.Http1xClientConnection$StreamImpl.handleHead(Http1xClientConnection.java:537) [vertx-core-4.0.0.jar:4.0.0]
        at io.vertx.core.http.impl.Http1xClientConnection.handleResponseBegin(Http1xClientConnection.java:695) [vertx-core-4.0.0.jar:4.0.0]
        at io.vertx.core.http.impl.Http1xClientConnection.handleHttpMessage(Http1xClientConnection.java:628) [vertx-core-4.0.0.jar:4.0.0]
        at io.vertx.core.http.impl.Http1xClientConnection.handleMessage(Http1xClientConnection.java:602) [vertx-core-4.0.0.jar:4.0.0]
        at io.vertx.core.net.impl.ConnectionBase.read(ConnectionBase.java:151) [vertx-core-4.0.0.jar:4.0.0]
        at io.vertx.core.net.impl.VertxHandler.channelRead(VertxHandler.java:144) [vertx-core-4.0.0.jar:4.0.0]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359) [netty-transport-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345) [netty-transport-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:337) [netty-transport-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102) [netty-codec-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359) [netty-transport-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345) [netty-transport-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:337) [netty-transport-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:438) [netty-transport-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:323) [netty-codec-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:310) [netty-codec-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:426) [netty-codec-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:278) [netty-codec-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:253) [netty-transport-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359) [netty-transport-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345) [netty-transport-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:337) [netty-transport-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1476) [netty-handler-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1225) [netty-handler-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1272) [netty-handler-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:502) [netty-codec-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:441) [netty-codec-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:278) [netty-codec-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359) [netty-transport-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345) [netty-transport-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:337) [netty-transport-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1408) [netty-transport-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359) [netty-transport-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345) [netty-transport-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930) [netty-transport-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) [netty-transport-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:677) [netty-transport-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:612) [netty-transport-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:529) [netty-transport-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:491) [netty-transport-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:905) [netty-common-4.1.34.Final.jar:4.1.34.Final]
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.34.Final.jar:4.1.34.Final]
        at java.lang.Thread.run(Thread.java:832) [?:?]

Looking more closely at the error it appears that indeed the Vertx class VertxUnsafeHeapByteBuf is inheriting from the Netty class UnpooledUnsafeHeapByteBuf which has a package level access level. ( in other words it's not a public class) The Netty library version maven resolves it as "4.1.34.Final".

I tried to exclude this version of the Netty library and use a newer version which has the UnpooledUnsafeHeapByteBuf class with public accessor. so I used "4.1.58.Final" which is the latest, and while I no longer getting the IllegalAccessError unfortunately it still does not work with the following stacktrace:

io.netty.resolver.dns.DnsResolveContext$SearchDomainUnknownHostException: Search domain query failed. Original hostname: 'usapi.alibaba.com' failed to resolve 'usapi.alibaba.com' after 2 queries 
    at io.netty.resolver.dns.DnsResolveContext.finishResolve(DnsResolveContext.java:877)
    at io.netty.resolver.dns.DnsResolveContext.tryToFinishResolve(DnsResolveContext.java:838)
    at io.netty.resolver.dns.DnsResolveContext.query(DnsResolveContext.java:333)
    at io.netty.resolver.dns.DnsResolveContext.access$600(DnsResolveContext.java:63)
    at io.netty.resolver.dns.DnsResolveContext$3.operationComplete(DnsResolveContext.java:382)
    at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:502)
    at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:476)
    at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:415)
    at io.netty.util.concurrent.DefaultPromise.addListener(DefaultPromise.java:152)
    at io.netty.util.concurrent.DefaultPromise.addListener(DefaultPromise.java:33)
    at io.netty.resolver.dns.DnsResolveContext.query(DnsResolveContext.java:357)
    at io.netty.resolver.dns.DnsResolveContext.access$600(DnsResolveContext.java:63)
    at io.netty.resolver.dns.DnsResolveContext$3.operationComplete(DnsResolveContext.java:382)
    at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:502)
    at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:476)
    at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:415)
    at io.netty.util.concurrent.DefaultPromise.addListener(DefaultPromise.java:152)
    at io.netty.util.concurrent.DefaultPromise.addListener(DefaultPromise.java:33)
    at io.netty.resolver.dns.DnsResolveContext.query(DnsResolveContext.java:357)
    at io.netty.resolver.dns.DnsResolveContext.query(DnsResolveContext.java:951)
    at io.netty.resolver.dns.DnsResolveContext.internalResolve(DnsResolveContext.java:270)
    at io.netty.resolver.dns.DnsResolveContext.doSearchDomainQuery(DnsResolveContext.java:245)
    at io.netty.resolver.dns.DnsAddressResolveContext.doSearchDomainQuery(DnsAddressResolveContext.java:98)
    at io.netty.resolver.dns.DnsResolveContext.resolve(DnsResolveContext.java:212)
    at io.netty.resolver.dns.DnsNameResolver.doResolveAllUncached0(DnsNameResolver.java:995)
    at io.netty.resolver.dns.DnsNameResolver.doResolveAllUncached(DnsNameResolver.java:974)
    at io.netty.resolver.dns.DnsNameResolver.doResolveUncached(DnsNameResolver.java:879)
    at io.netty.resolver.dns.DnsNameResolver.doResolve(DnsNameResolver.java:829)
    at io.netty.resolver.dns.DnsNameResolver.doResolve(DnsNameResolver.java:672)
    at io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:63)
    at io.netty.resolver.dns.InflightNameResolver.resolve(InflightNameResolver.java:100)
    at io.netty.resolver.dns.InflightNameResolver.resolve(InflightNameResolver.java:66)
    at io.netty.resolver.dns.InflightNameResolver.resolve(InflightNameResolver.java:51)
    at io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:57)
    at io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:32)
    at io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:108)
    at io.netty.bootstrap.Bootstrap.doResolveAndConnect0(Bootstrap.java:208)
    at io.netty.bootstrap.Bootstrap.doResolveAndConnect(Bootstrap.java:170)
    at io.netty.bootstrap.Bootstrap.connect(Bootstrap.java:145)
    at io.vertx.core.net.impl.ChannelProvider.handleConnect(ChannelProvider.java:137)
    at io.vertx.core.net.impl.ChannelProvider.connect(ChannelProvider.java:90)
    at io.vertx.core.net.impl.ChannelProvider.connect(ChannelProvider.java:76)
    at io.vertx.core.http.impl.HttpChannelConnector.doConnect(HttpChannelConnector.java:145)
    at io.vertx.core.http.impl.HttpChannelConnector.connect(HttpChannelConnector.java:120)
    at io.vertx.core.net.impl.clientconnection.Pool$Holder.connect(Pool.java:126)
    at io.vertx.core.net.impl.clientconnection.Pool.checkPendingTasks(Pool.java:243)
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:495)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:905)
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: io.netty.resolver.dns.DnsNameResolverException: [/8.8.4.4:53] failed to send a query (no stack trace available)
Caused by: io.netty.handler.codec.EncoderException: java.lang.NoClassDefFoundError: io/netty/util/internal/ObjectPool$ObjectCreator
    at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:107)
    at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:706)
    at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:753)
    at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:778)
    at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:747)
    at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1031)
    at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:310)
    at io.netty.resolver.dns.DnsQueryContext.writeQuery(DnsQueryContext.java:139)
    at io.netty.resolver.dns.DnsQueryContext.sendQuery(DnsQueryContext.java:118)
    at io.netty.resolver.dns.DnsQueryContext.query(DnsQueryContext.java:113)
    at io.netty.resolver.dns.DnsNameResolver.query0(DnsNameResolver.java:1109)
    at io.netty.resolver.dns.DnsResolveContext.query(DnsResolveContext.java:351)
    at io.netty.resolver.dns.DnsResolveContext.access$600(DnsResolveContext.java:63)
    at io.netty.resolver.dns.DnsResolveContext$3.operationComplete(DnsResolveContext.java:382)
    at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:502)
    at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:476)
    at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:415)
    at io.netty.util.concurrent.DefaultPromise.addListener(DefaultPromise.java:152)
    at io.netty.util.concurrent.DefaultPromise.addListener(DefaultPromise.java:33)
    at io.netty.resolver.dns.DnsResolveContext.query(DnsResolveContext.java:357)
    at io.netty.resolver.dns.DnsResolveContext.query(DnsResolveContext.java:951)
    at io.netty.resolver.dns.DnsResolveContext.internalResolve(DnsResolveContext.java:270)
    at io.netty.resolver.dns.DnsResolveContext.doSearchDomainQuery(DnsResolveContext.java:245)
    at io.netty.resolver.dns.DnsAddressResolveContext.doSearchDomainQuery(DnsAddressResolveContext.java:98)
    at io.netty.resolver.dns.DnsResolveContext.resolve(DnsResolveContext.java:212)
    at io.netty.resolver.dns.DnsNameResolver.doResolveAllUncached0(DnsNameResolver.java:995)
    at io.netty.resolver.dns.DnsNameResolver.doResolveAllUncached(DnsNameResolver.java:974)
    at io.netty.resolver.dns.DnsNameResolver.doResolveUncached(DnsNameResolver.java:879)
    at io.netty.resolver.dns.DnsNameResolver.doResolve(DnsNameResolver.java:829)
    at io.netty.resolver.dns.DnsNameResolver.doResolve(DnsNameResolver.java:672)
    at io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:63)
    at io.netty.resolver.dns.InflightNameResolver.resolve(InflightNameResolver.java:100)
    at io.netty.resolver.dns.InflightNameResolver.resolve(InflightNameResolver.java:66)
    at io.netty.resolver.dns.InflightNameResolver.resolve(InflightNameResolver.java:51)
    at io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:57)
    at io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:32)
    at io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:108)
    at io.netty.bootstrap.Bootstrap.doResolveAndConnect0(Bootstrap.java:208)
    at io.netty.bootstrap.Bootstrap.doResolveAndConnect(Bootstrap.java:170)
    at io.netty.bootstrap.Bootstrap.connect(Bootstrap.java:145)
    at io.vertx.core.net.impl.ChannelProvider.handleConnect(ChannelProvider.java:137)
    at io.vertx.core.net.impl.ChannelProvider.connect(ChannelProvider.java:90)
    at io.vertx.core.net.impl.ChannelProvider.connect(ChannelProvider.java:76)
    at io.vertx.core.http.impl.HttpChannelConnector.doConnect(HttpChannelConnector.java:145)
    at io.vertx.core.http.impl.HttpChannelConnector.connect(HttpChannelConnector.java:120)
    at io.vertx.core.net.impl.clientconnection.Pool$Holder.connect(Pool.java:126)
    at io.vertx.core.net.impl.clientconnection.Pool.checkPendingTasks(Pool.java:243)
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:495)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:905)
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: java.lang.NoClassDefFoundError: io/netty/util/internal/ObjectPool$ObjectCreator
    at io.netty.buffer.PoolThreadCache.createSubPageCaches(PoolThreadCache.java:117)
    at io.netty.buffer.PoolThreadCache.<init>(PoolThreadCache.java:74)
    at io.netty.buffer.PooledByteBufAllocator$PoolThreadLocalCache.initialValue(PooledByteBufAllocator.java:499)
    at io.netty.buffer.PooledByteBufAllocator$PoolThreadLocalCache.initialValue(PooledByteBufAllocator.java:483)
    at io.netty.util.concurrent.FastThreadLocal.initialize(FastThreadLocal.java:188)
    at io.netty.util.concurrent.FastThreadLocal.get(FastThreadLocal.java:142)
    at io.netty.buffer.PooledByteBufAllocator.newDirectBuffer(PooledByteBufAllocator.java:373)
    at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:187)
    at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:178)
    at io.netty.buffer.AbstractByteBufAllocator.ioBuffer(AbstractByteBufAllocator.java:139)
    at io.netty.handler.codec.dns.DatagramDnsQueryEncoder.allocateBuffer(DatagramDnsQueryEncoder.java:86)
    at io.netty.handler.codec.dns.DatagramDnsQueryEncoder.encode(DatagramDnsQueryEncoder.java:62)
    at io.netty.handler.codec.dns.DatagramDnsQueryEncoder.encode(DatagramDnsQueryEncoder.java:35)
    at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:89)
    ... 52 more
Caused by: java.lang.ClassNotFoundException: io.netty.util.internal.ObjectPool$ObjectCreator
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    ... 66 more
Yaniv Cohen
  • 379
  • 1
  • 7
  • 20
  • Seems like the upgrade might not be that straightforward. Can you also state the difference in the implementation of `io.netty.util.internal.ObjectPool$ObjectCreator` with the upgrade in netty version? – Naman Jan 26 '21 at 15:39
  • 2
    Netty has some weird issues going around for a while. In my case, web flux was causing the event loop to get terminated when it was on the classpath. I resolved it using test and trail and settled down on https://mvnrepository.com/artifact/io.netty/netty-all/4.1.48.Final – Aniket Sahrawat Jan 26 '21 at 15:47
  • @Naman That's a `ClassNotFoundException` if you missed it somehow. – Concurrent Bhai Jan 27 '21 at 21:31
  • @ConcurrentBhai No. I didn't miss it. The reason for asking about the implementation was the explicit upgrade mentioned by the OP which resulted in CNFE. – Naman Jan 28 '21 at 03:25

2 Answers2

3

Until vert.x will release a fix for this issue. For the time being the suggestion made by Aniket Sahrawat resolved the issue. which is to include the following dependency in your POM file:

<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-all</artifactId>
    <version>4.1.48.Final</version>
</dependency>
Yaniv Cohen
  • 379
  • 1
  • 7
  • 20
0

From your last stacktrace it looks like you have a multiple netty version on the classpath. Ensure all of them have the same version (in this example 4.1.58.Final).

Norman Maurer
  • 23,104
  • 2
  • 33
  • 31
  • Thanks Norman. The second stacktrace was an attempt to see if upgrading the netty library to a version which contains the same class will resolve the issue. it did, but it created a new issue which is far more complicated to resolve because now I'll need to exclude all the netty dependencies from all my vertx dependencies in order to make them all work with a different version. I would not want to go down that path because I don't suppose I require to change vertx netty version dependencies. Is there any other way to resolve this issue? – Yaniv Cohen Jan 27 '21 at 13:04
  • From what I see you need to update netty. – Norman Maurer Jan 27 '21 at 13:19