dubbo报错:一个NoClassDefFoundError:factories/SerializerFactory问题解决

发布时间:2019-11-17 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了dubbo报错:一个NoClassDefFoundError:factories/SerializerFactory问题解决脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

dubbo编译错误 NoClassDefFoundError,factories/SerializerFactory

说一个挺有意思的解释dubbo关系,dubbo分为服务者和消费者,服务者比作司机,消费者比作乘客,zookeePEr比作滴滴APP,双方之间的建立关系都在这个APP体现)

说正题了,昨天写了一个dubbo 提供的接口报错,百思不得其解。

第一眼感觉是序列化的问题,实际已经加上了:
1.序列化的问题,缺少Serializable(bean实现Serializable接口即可)

Serialized class com.yykj.mall.dto.PRoductListITemDTO must implement java.io.Serializable 

报错信息如下:

Caused by: java.lang.NoClaSSDefFoundError: com/esotericSoftware/kryo/factories/SerializerFactory

at com.alibaba.dubbo.common.serialize.support.kryo.KryoFactory.createKryo(KryoFactory.java:74) at com.alibaba.dubbo.common.serialize.support.kryo.PooledKryoFactory.getKryo(PooledKryoFactory.java:43) at com.alibaba.dubbo.common.serialize.support.kryo.KryoObjectOutput.<init>(KryoObjectOutput.java:31) at com.alibaba.dubbo.common.serialize.support.kryo.KryoSerialization.serialize(KryoSerialization.java:43) at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.encodeRequest(ExchangeCodec.java:240) at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.encode(ExchangeCodec.java:76) at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCountCodec.encode(DubboCountCodec.java:39) at com.alibaba.dubbo.remoting.transport.netty.NettyCodecAdapter$InternalEncoder.encode(NettyCodecAdapter.java:81) at org.jboss.netty.handler.codec.oneone.OneToOneEncoder.doEncode(OneToOneEncoder.java:66) at org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:59) at org.jboss.netty.channel.DefaultChannelPipeline.sendDownstream(DefaultChannelPipeline.java:591) at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendDownstream(DefaultChannelPipeline.java:784) at org.jboss.netty.channel.SimpleChannelHandler.writeRequested(SimpleChannelHandler.java:292) at com.alibaba.dubbo.remoting.transport.netty.NettyHandler.writeRequested(NettyHandler.java:99) at org.jboss.netty.channel.SimpleChannelHandler.handleDownstream(SimpleChannelHandler.java:254) at org.jboss.netty.channel.DefaultChannelPipeline.sendDownstream(DefaultChannelPipeline.java:591) at org.jboss.netty.channel.DefaultChannelPipeline.sendDownstream(DefaultChannelPipeline.java:582) at org.jboss.netty.channel.Channels.write(Channels.java:704) at org.jboss.netty.channel.Channels.write(Channels.java:671) at org.jboss.netty.channel.AbstractChannel.write(AbstractChannel.java:348) at com.alibaba.dubbo.remoting.transport.netty.NettyChannel.send(NettyChannel.java:98) ... 52 more

Caused by: java.lang.ClassNotFoundException: com.esotericsoftware.kryo.factories.SerializerFactory

at java.net.URLClassLoader.findClass(URLClassLoader.java:382) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.launcher$AppClassLoader.loadClass(Launcher.java:349) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 73 more 

出现问题,总是感觉都配对了,很完美,嗯嗯嗯,但是就是一直这个错,感觉是一个心病一样缠绕。。。。
所以,想一想列出几项错误:
1.配置问题
2.接口调用(使用命令)
3.使用工具验证 (dubbo-admin

1.首先保证配置正确(好像是废话,但是我不删)
2.使用dubbo-admin注册服务中心,等于zookeeper的可视化界面,服务端和消费端接口正常情况
3.使用CMD或win10 PowerShell操作,telnet本地的dubbo端口,telnet 127.0.0.1 20880 回车

(找之前的问题截屏,太费劲就手写了)

dubbo> ls dubbo> com.dubbo.IDubboService// 你的接口 dubbo> ls IDubboService   // 查看你的方法是否存在 select    // 三个方法 insert update    dubbo> invoke select("哈哈哈") [{"哈哈哈""中国""xxx@qq.com"}]     // 说明接口能调通,没有问题 

说了这么多,总之前面的问题还没有解决,从另一方面解决,保证其他项是没有问题的(如配置,接口实现等)
想了好久,SerializerFactory感觉还是序列化出问题
1.dubbo请求接口正常,说明配置是没有问题的,问题出现在我消费者调用服务者的时候或,我在启动消费者过程中发现这个错,表示转换有问题,不兼容,不匹配-------> 检查版本
--查看zookper版本,dubbo引包的版本

服务者

dubbo报错:一个NoClassDefFoundError:factories/SerializerFactory问题解决

消费者

dubbo报错:一个NoClassDefFoundError:factories/SerializerFactory问题解决

哦,果然是,总结:版本不兼容,确实是,替换一样的版本就好了,原因在于,项目过多,依赖好多jar不一定是这个版本,所以,保证双方之间版本一致性是很重要的,解决很多调用的时候,或者异常错误不明朗,高版本和低版本差异等,检查版本往往是有效果的,夜深了就说这么多了。

脚本宝典总结

以上是脚本宝典为你收集整理的dubbo报错:一个NoClassDefFoundError:factories/SerializerFactory问题解决全部内容,希望文章能够帮你解决dubbo报错:一个NoClassDefFoundError:factories/SerializerFactory问题解决所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。