使用 vertx Web 客户端版本 4.0.0 时出现 java.lang.IllegalAccessError

2023-12-02

将 vertx 4.0.0 与 jdk 14 结合使用。尝试使用 vertx Web 客户端发出 REST 请求时,出现以下异常:

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) [?:?]

更仔细地观察该错误,似乎 Vertx 类确实VertxUnsafeHeapByteBuf继承自Netty类UnpooledUnsafeHeapByteBuf它具有包级访问级别。 (换句话说,这不是公开课) Netty库版本maven将其解析为“4.1.34.Final”。

我尝试排除此版本的 Netty 库并使用具有以下功能的较新版本UnpooledUnsafeHeapByteBuf具有公共访问器的类。 所以我使用了最新的“4.1.58.Final”,虽然我不再得到IllegalAccessError不幸的是,它仍然不适用于以下堆栈跟踪:

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

直到 vert.x 发布此问题的修复程序。 Aniket Sahrawat 提出的建议暂时解决了这个问题。这将在您的 POM 文件中包含以下依赖项:

<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-all</artifactId>
    <version>4.1.48.Final</version>
</dependency>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 vertx Web 客户端版本 4.0.0 时出现 java.lang.IllegalAccessError 的相关文章

  • Quarkus Keycloak 自定义授权

    我尝试在 quarkus 中进行一些 websocket 身份验证 我目前有使用启用的身份验证的休息端点 我使用 keyclock 进行身份验证 并使用 vert x 与 websocket 进行双向连接 也在 github 线程中发布此问
  • Netty异步写入响应和大小未知的大数据

    我开发了一个netty http服务器 但是当我在方法ChannelInboundHandlerAdapter channelRead0中写入响应时 我的响应结果来自另一台服务器 并且结果的大小未知 因此它的http响应标头可能具有内容长度
  • 每个连接的 Netty 多线程

    我是 Netty 新手 我想开发一个服务器 旨在接收来自可能少数 假设最多有 2 个 客户端的请求 但是每个客户端都会不断地向服务器发送许多请求 服务器必须处理此类请求并响应客户端 因此 在这里我假设即使我配置了多个工作线程 它也可能没有用
  • 泄漏:ByteBuf.release() 在被垃圾收集之前没有被调用。 Spring Reactor TcpServer

    我正在使用reactor core 1 1 0 RELEASE reactor net 1 1 0 RELEASE 正在使用netty all 4 0 18 Final reactor spring context 1 1 0 RELEAS
  • 每个 UDP 数据报的 Netty 不同管道

    我们有一个已经在 TCP IP 中实现的服务器 但现在我们要求该协议也支持 UDP 发送的每个 UDP 数据报都包含我需要解码的所有内容 因此这是一个非常简单的回复和响应系统 数据报中的数据由换行符分隔 服务器启动时的引导代码如下所示 SE
  • vertx 应用程序中的 CORS 问题无法正常工作

    我的 Vertx 服务器驻留在服务器 A 中 客户端驻留在服务器 B 中 当我尝试访问 vertx 服务器时 弹出 CORS 错误 我添加了一些服务器端代码来处理 CORS 问题 但它不起作用 我们是否需要在客户端添加一些标头 我在这里缺少
  • netty中非阻塞通道中的SO_TIMEOUT

    如果通道在超时毫秒内未收到读取 响应 SO TIMEOUT 是否会使非阻塞通道过期 bootstrap group workerGroup channel NioSocketChannel class handler channelInit
  • ChannelOption.SO_BACKLOG 的作用是什么?

    option ChannelOption SO BACKLOG 100 Netty 4 升级文档中显示 你能解释一下它的作用吗 Thanks 它是一个传递的套接字选项 用于确定排队的连接数 http docs oracle com java
  • 如何知道Netty ByteBuf中是否没有数据可读取?

    我是 Netty 新手 文件传输的问题让我困惑了好几天 我想发送image文件从客户端到服务器 下面的代码是可执行的 但只有我shutdown服务器强制我可以正常打开收到的图像文件 否则 显示 您似乎没有查看此文件的权限 检查权限并重试 所
  • 客户端 ECC SSL 证书包含“未知命名曲线”

    问题背景 我正在一个现有的库中工作 该库在远程服务器上使用 SSL 和 netty 框架 我遇到 SSL TLS 握手错误 错误如下 javax net ssl SSLProtocolException java io IOExceptio
  • Netty如何使用线程池?

    您能解释一下 Netty 如何使用线程池来工作吗 我是否理解正确 有两种线程池 老板和工人 Boss 用来做 I O worker 用来调用用户回调 messageReceived 来处理数据 这是来自 NioServerSocketCha
  • 在 Vertx 中,我需要将所有 HTTP 请求重定向到相同的 URL,但对于 HTTPS

    我在 Koltin 中编写了一个 Vertx web 处理程序 它将我收到的任何 HTTP 请求重定向到 HTTPS 并且我正在使用context request isSSL确定请求是否不是 SSL 在我将代码放在负载均衡器后面之前 这一切
  • Netty websocket客户端闲置5分钟后不从服务器读取新帧

    我在服务器端和客户端都使用 Netty 来建立和控制 websocket 连接 我在服务器端有一个空闲状态处理程序 http netty io 4 1 api io netty handler timeout IdleStateHandle
  • netty DefaultChannelPipeline 异常捕获

    不幸的是 我不明白 netty 服务器的输出 BUILD SUCCESSFUL Total time 3 seconds Jul 27 2014 2 04 44 AM io netty handler logging LoggingHand
  • 如何关闭 Netty 库调试输出?

    我正在使用 Netty 通过 Ning async HTTPlibrary http www ning com code 2010 03 introducing nings asynchronous http client library
  • 如何使用 Netty 发送对象?

    如何通过Netty从服务器端发送bean并在客户端接收该bean 当我发送简单的整数消息 inputstream 时 它工作成功 但我需要发送 bean 如果您在客户端和服务器端使用 Netty 那么您可以使用 Netty对象解码器 htt
  • 如何用Java处理来自客户端的Websocket消息?

    我正在使用 Websocket 用 Ja va 开发客户端 服务器应用程序 目前 所有客户端消息均使用 switch case 进行处理 如下所示 OnMessage public String onMessage String unscr
  • 尝试接收 UDP 多播时出现空指针异常

    在尝试了几次让简单的 UDP 多播接收器工作后 我感到很困惑 在我自己的代码无法按预期工作后 我尝试了 vertx 文档中发布的确切示例 DatagramSocket socket vertx createDatagramSocket ne
  • 了解 netty 通道缓冲区和水印

    我正在尝试了解网络缓冲区和水印 作为一个测试用例 我有一个 netty 服务器 它向客户端写入数据 客户端被阻止 基本上每次读取之间有 10 秒的睡眠时间 在正常 I O 下 如果接收方被阻塞 TCP 发送方将受到限制 由于流量控制 发送速
  • 普罗米修斯指标 - 未找到

    我有 Spring Boot 应用程序 并且正在使用 vertx 我想监控服务和 jvm 为此我选择了 Prometheus 这是我的监控配置类 Configuration public class MonitoringConfig Bea

随机推荐

  • 如何以编程方式比较 R 中的整行?

    我在 R 中有以下数据框 data Time X1 X2 X3 1 1 0 0 2 1 1 1 3 0 0 1 4 1 1 1 5 0 0 0 6 0 1 1 7 1 1 1 8 0 0 0 9 1 1 1 10 0 0 0 有没有办法以编
  • Flume-ng 拖尾文件

    我试图了解如何使用 Flume ng 尾部文件 以便可以将数据推送到 HDFS 中 在第一个实例中 我设置了一个简单的conf文件 tail1 sources source1 tail1 sinks sink1 tail1 channels
  • PHP 默认函数参数为 T_VARIABLE?

    我试图提供一个成员变量作为类方法的默认值 我知道不可能使用变量作为非类函数的默认值 但似乎应该有一种方法可以在类中执行此操作 一定有办法做到这一点 也许我只是语法错误 class test private test construct th
  • 共享首选项“限制”

    我知道与此类似的问题已被问过很多次 并且通过浏览所以我部分找到了答案 但不完整 并且 android 文档并没有真正的帮助 显然 我知道它们是如何工作的 并且之前多次使用过共享首选项 但我想知道什么时候 多少 太多了 我读过人们存储了 10
  • GIMP:从文件夹中的所有图像文件创建图像堆栈

    我需要比较需要堆叠大量图像的分割算法的结果 例如原始图像和二值图像 所以我想到了一个 GIMP 脚本 它采用一个目录的名称 并将所有包含图像文件放入图层中 以便可以在 GIMP 中打开和关闭它们以比较结果 如何用 GIMP 实现这一点 谢谢
  • Visual Studio 2013 Update 4 和 Apache Cordova CTP3 在没有断点的 Javascript 行上中断/停止

    我正在运行 Visual Studio 2013 Update 4 并安装了 Apache Cordova CTP3 工具 创建一个全新的 Apache Cordova 项目并对其进行调试后 它会在没有断点的看似随机的 JavaScript
  • flink 1.3.1 弹性搜索 5.5.1。 ElasticsearchSinkFunction 失败并出现 java.lang.NoSuchMethodError

    我正在使用以下示例Scala sbt flink elasticsearch kibana Flink教程 My built sbt包括以下版本 libraryDependencies Seq org apache flink flink
  • 无法使用 gradle 按类别包含/排除 Junit 测试类

    给定这些接口 testclient priority High testclient priority Low 和一个像这样注释的 junit 类 Category testclient priority High class public
  • 如何将XML文本转换为表格格式

    在下面的示例中 我们尝试将 XML 数据转换为 HTML 但这里我们面临着由于元素不一致而面临的挑战 如 和 Note 如果我们从 中删除 元素 则 xslt 代码可以正常工作 参考网址 https xsltfiddle liberty d
  • MySQL 多个字段的唯一索引

    我们的数据库中有一种特殊的表 它本身存储其更改的历史记录 所谓的 自存档 表 CREAT TABLE coverages id INT primary key auto increment subscriber id INT current
  • Java:正确关闭多线程服务器的套接字

    我正在尝试创建一个多线程服务器 多个客户端可以连接并提供服务 但是 我不确定在需要时如何正确释放我的资源 我的服务器运行一个输入线程 等待用户输入 和一个处理线程 处理连接和用户 我在服务器类中打开一个 ServerSocket 并将其传递
  • 使用 window.location.assign 加载页面后调用 javascript 函数

    使用 window location assign 加载页面后是否可以调用 javascript 函数 我有这个代码 我加载页面 然后调用 ReadEnglish 这是在spirituality php 中定义的函数 该函数不执行 使该函数
  • Android Hello World 异常

    我正在尝试让这个 hello world android 应用程序正常工作 我经历了这个安装过程 并了解了使用 Hello World 应用程序启动和运行它是多么容易 我运行了简单的 hello world 应用程序 完全按照它所说的每一步
  • 什么是双向绑定?

    我读过很多关于 Backbone 不进行双向绑定的文章 但我并不完全理解这个概念 有人能给我一个例子 说明两种方式绑定如何在 MVC 代码库中工作以及如何在 Backbone 中工作吗 双向绑定意味着 当模型中的属性更新时 UI 也会更新
  • Ruby:“gem install bundler”未安装捆绑程序

    我是 Rails 新手 正在尝试启动并运行演示应用程序 我在 Linux 系统 lubuntu 大部分是全新安装 上运行 捆绑安装 时遇到问题 即使确实如此 如果我关闭终端并启动另一个终端 它也无法再次运行 这个循环看起来像这样 sandb
  • 登录到 SQL Server 触发器中的表

    我正在编写 SQL Server 2005 触发器 我想在触发器执行期间使用 INSERT 语句到我的日志表中进行一些日志记录 当执行过程中发生错误时 我想引发错误并取消导致触发器执行的操作 但不丢失日志记录 实现这一目标的最佳方法是什么
  • 如何使用 ASP.NET MVC 维护用户会话

    大家好 我想知道有什么方法可以在不使用 ASP NET MVC 中的成员身份的情况下维护登录 注销 用户会话等内容 Faraaz 您所指的领域涉及三种提供商模型 The 会员提供者涉及身份验证 验证用户并存储与用户相关的数据 例如上次登录日
  • 如何在Python中搜索和替换?

    如何在 ABC D1234 等字符串中添加字符 使其变为 ABC D 1234 另外 如何在前 2 个数字后添加字符 即从 ABC D1234 到 ABC D12 34 非常感谢 这取决于您用来决定在何处插入额外字符的规则 如果你想要它在第
  • 如何强制 C# .net 应用程序在 Windows 中仅运行一个实例? [复制]

    这个问题在这里已经有答案了 可能的重复 创建单实例应用程序的正确方法是什么 如何强制 C net 应用程序在 Windows 中仅运行一个实例 我更喜欢类似于以下的互斥解决方案 这样 如果应用程序已加载 它会重新关注该应用程序 using
  • 使用 vertx Web 客户端版本 4.0.0 时出现 java.lang.IllegalAccessError

    将 vertx 4 0 0 与 jdk 14 结合使用 尝试使用 vertx Web 客户端发出 REST 请求时 出现以下异常 15 56 48 294 vert x eventloop thread 0 ERROR io vertx c