Spring boot 在2.1.9.0版本的SpringCloudAPI网关上启用HTTP/2支持时发生ClassCastException

Spring boot 在2.1.9.0版本的SpringCloudAPI网关上启用HTTP/2支持时发生ClassCastException,spring-boot,java-8,netty,spring-cloud-gateway,reactor-netty,Spring Boot,Java 8,Netty,Spring Cloud Gateway,Reactor Netty,请看,通过排除tomcat starter并将jetty started添加到spring web配置中,以及添加jetty alpn conscrypt服务器、http2服务器依赖项,我能够在jetty服务器上使用JDK8在用户界面上启用HTTP/2支持 但是,在使用Netty server的Spring Cloud API网关端,我尝试了所有步骤,但没有弄清楚如何在Spring Cloud API网关启用HTTP/2,,我添加了Netty Tnative boringssl static作为

请看,通过排除tomcat starter并将jetty started添加到spring web配置中,以及添加jetty alpn conscrypt服务器、http2服务器依赖项,我能够在jetty服务器上使用JDK8在用户界面上启用HTTP/2支持

但是,在使用Netty server的Spring Cloud API网关端,我尝试了所有步骤,但没有弄清楚如何在Spring Cloud API网关启用HTTP/2,,我添加了Netty Tnative boringssl static作为依赖项,现在我遇到了这个错误

2020-11-24 23:34:18.957错误10732---[ctor-http-nio-2]reactor.netty.tcp.TcpServer:[id:0xf9cd86ed,L:/127.0.0.1:9001-R:/127.0.0.1:58801](H2-1)onCughtException(简单连接{channel=[id:0xf9cd86ed,L:/127.0.0.1:9001-R:/127.0.1:58801](H2-1)

弹簧靴:2.1.9.1释放 春云:格林威治.SR3
Java版本:JDK-8

我通过将启动版本升级到2.2.5解决了这个问题。发布版本并将云版本升级到Hoxton.SR3

您一年前就解决了一个问题,已经检查了这个链接和类似链接,但没有任何东西对我有效。我正在使用Spring boot:2.1.9。发布Spring cloud:Greenwich.SR3 Java版本:JDK-8Did您尝试了fixed Reactor Netty版本,该版本>0.8.12.RELEASE,因为在上面的堆栈跟踪中,您仍然使用存在问题的版本?是的,然后它开始给出不同的依赖项错误
2020-11-24 23:55:24.385 ERROR 19564 --- [ctor-http-nio-2] reactor.netty.tcp.TcpServer              : [id: 0xb5f89ffb, L:/127.0.0.1:9001 - R:/127.0.0.1:58977](H2 - 1) onUncaughtException(SimpleConnection{channel=[id: 0xb5f89ffb, L:/127.0.0.1:9001 - R:/127.0.0.1:58977](H2 - 1)})

java.lang.ClassCastException: io.netty.handler.codec.http2.Http2MultiplexCodec$Http2MultiplexCodecStreamChannel cannot be cast to io.netty.channel.socket.SocketChannel
    at reactor.netty.http.server.Http2StreamBridgeHandler.channelRead(Http2StreamBridgeHandler.java:77) ~[reactor-netty-0.8.12.RELEASE.jar:0.8.12.RELEASE]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1421) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.AbstractHttp2StreamChannel$Http2ChannelUnsafe.doRead0(AbstractHttp2StreamChannel.java:851) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.AbstractHttp2StreamChannel.fireChildRead(AbstractHttp2StreamChannel.java:533) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.Http2MultiplexCodec.onHttp2Frame(Http2MultiplexCodec.java:142) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.Http2FrameCodec$FrameListener.onHeadersRead(Http2FrameCodec.java:569) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.Http2FrameCodec$FrameListener.onHeadersRead(Http2FrameCodec.java:563) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.Http2FrameListenerDecorator.onHeadersRead(Http2FrameListenerDecorator.java:48) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.Http2EmptyDataFrameListener.onHeadersRead(Http2EmptyDataFrameListener.java:63) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder$FrameReadListener.onHeadersRead(DefaultHttp2ConnectionDecoder.java:373) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.DefaultHttp2FrameReader$1.processFragment(DefaultHttp2FrameReader.java:457) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.DefaultHttp2FrameReader.readHeadersFrame(DefaultHttp2FrameReader.java:464) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.DefaultHttp2FrameReader.processPayloadState(DefaultHttp2FrameReader.java:254) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.DefaultHttp2FrameReader.readFrame(DefaultHttp2FrameReader.java:160) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder.decodeFrame(DefaultHttp2ConnectionDecoder.java:174) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.DecoratingHttp2ConnectionDecoder.decodeFrame(DecoratingHttp2ConnectionDecoder.java:63) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.Http2ConnectionHandler$FrameDecoder.decode(Http2ConnectionHandler.java:378) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.Http2ConnectionHandler.decode(Http2ConnectionHandler.java:438) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:505) [netty-codec-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:444) [netty-codec-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:283) [netty-codec-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.http2.Http2MultiplexCodec.channelRead(Http2MultiplexCodec.java:267) [netty-codec-http2-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1347) [netty-handler-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.ssl.SslHandler.decodeNonJdkCompatible(SslHandler.java:1236) [netty-handler-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1273) [netty-handler-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:505) [netty-codec-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:444) [netty-codec-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:283) [netty-codec-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1421) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:697) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:632) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:549) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:511) [netty-transport-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:918) [netty-common-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.39.Final.jar:4.1.39.Final]
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.39.Final.jar:4.1.39.Final]
    at java.lang.Thread.run(Unknown Source) [na:1.8.0_181]