java.lang.AbstractMethodError:io.netty.handler.codec.http.DefaultFullHttpRequest.touch(Ljava / lang / Object;)Lio / netty / util / ReferenceCounted

问题描述 投票:-1回答:1

我是Java领域的新手,正在尝试发送Https请求。当我尝试通过通道发送请求时,出现以下错误

java.lang.AbstractMethodError:io.netty.handler.codec.http.DefaultFullHttpRequest.touch(Ljava/lang/Object;)Lio/netty/util/ReferenceCounted

这是我的管道代码

if (sslCtx != null) {
                         ch.pipeline().addLast(sslCtx.newHandler(ch.alloc()));
                     }

                     ch.pipeline().addLast(new HttpClientCodec());

                     ch.pipeline().addLast(new HttpContentDecompressor());

                     ch.pipeline().addLast(new HttpObjectAggregator(1048576));
                     ch.pipeline().addLast("encoder", new HttpRequestEncoder());
                     ch.pipeline().addLast(new ClientHandler());

这是我的引导程序代码

ChannelFuture f = b.connect(host, port).sync(); 

             ByteBuf bbuf = Unpooled.copiedBuffer(message, StandardCharsets.UTF_8);

             FullHttpRequest request = new DefaultFullHttpRequest(
                     HttpVersion.HTTP_1_1, HttpMethod.POST, uri,bbuf,Boolean.FALSE);
             request.headers().set(HttpHeaders.Names.HOST, host);
             request.headers().set(HttpHeaders.Names.CONNECTION, HttpHeaders.Values.KEEP_ALIVE);
             request.headers().set(HttpHeaders.Names.CONTENT_LENGTH, bbuf.readableBytes());
             ((DefaultFullHttpRequest) request).content().clear().writeBytes(bbuf);

             f.channel().writeAndFlush(request);

Stacktrace:

Exception in thread "main" java.lang.AbstractMethodError: io.netty.handler.codec.http.DefaultFullHttpRequest.touch(Ljava/lang/Object;)Lio/netty/util/ReferenceCounted;
    at io.netty.util.ReferenceCountUtil.touch(ReferenceCountUtil.java:73)
    at io.netty.channel.DefaultChannelPipeline.touch(DefaultChannelPipeline.java:107)
    at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:821)
    at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:805)
    at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:842)
    at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1032)
    at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:296

上下文:尝试发送HTTPS请求

我在做什么错?

java netty
1个回答
0
投票

这很可能是因为您的类路径上有多个Netty 4.x依赖版本。只需确保您只拥有最新的课程路径,它就可以工作

© www.soinside.com 2019 - 2024. All rights reserved.