我用的这个
<dependency>
<groupId>org.apache.dubbo.extensions</groupId>
<artifactId>dubbo-serialization-kryo</artifactId>
<version>1.0.1</version>
</dependency>
但是会报错,应该用哪个版本?
2023-04-11 17:31:32.607 WARN 15080 --- [:20801-thread-3] o.a.d.r.p.dubbo.DecodeableRpcInvocation : [DUBBO] Decode rpc invocation failed: java.util.ArrayList cannot be cast to java.util.Map, dubbo version: 3.1.9, current host: 192.168.1.1, error code: 4-20. This may be caused by , go to https://dubbo.apache.org/faq/4/20 to find instructions.
java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Map
at org.apache.dubbo.common.serialize.ObjectInput.readAttachments(ObjectInput.java:86) ~[dubbo-3.1.9.jar:3.1.9]
at org.apache.dubbo.rpc.protocol.dubbo.DecodeableRpcInvocation.decode(DecodeableRpcInvocation.java:218) ~[dubbo-3.1.9.jar:3.1.9]
at org.apache.dubbo.rpc.protocol.dubbo.DecodeableRpcInvocation.decode(DecodeableRpcInvocation.java:93) ~[dubbo-3.1.9.jar:3.1.9]
at org.apache.dubbo.remoting.transport.DecodeHandler.decode(DecodeHandler.java:62) [dubbo-3.1.9.jar:3.1.9]
at org.apache.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:46) [dubbo-3.1.9.jar:3.1.9]
at org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:62) [dubbo-3.1.9.jar:3.1.9]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_322]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_322]
at org.apache.dubbo.common.threadlocal.InternalRunnable.run(InternalRunnable.java:41) [dubbo-3.1.9.jar:3.1.9]
at java.lang.Thread.run(Thread.java:750) [na:1.8.0_322]
3条答案
按热度按时间uttx8gqw1#
在我本地的demo测试中 (provider & consumer 版本3.1.9,kryo 版本 1.0.1)没有发现异常,可以参考下报错信息中提供的网址: https://dubbo.apache.org/faq/4/20 ,是否是服务方和调用方的版本不匹配?
hs1rzwqc2#
我调用的接口返回的是个 List, 不知道会不会是这个关系?
u2nhd7ah3#
kryo 序列化返回列表的时候会把类型搞错?