【java】图解报错:c.alibaba.com.caucho.hessian.io.SerializerFactory - Hessian/Burlap:

俗话说新手打牌手气好,同时新手写java代码,报错也是一个接一个的~~ 作为一个进入java已经半年的小白,今天又遇到了一个奇怪的bug困扰了很久,下面就讲讲怎么解决这个bug吧!


先po一下我的报错信息:

WARN c.alibaba.com.caucho.hessian.io.SerializerFactory - Hessian/Burlap: ‘com.yzkj.zf.entity.Department’ is an unknown class in sun.misc.Launcher$AppClassLoader@18b4aac2:

虽然这个报错不影响正常的查询等操作,但是一直报错也不是长久之计,小白要有探索精神,那我们就来好好找找原因吧。

这个报错的简单理解就是:

预警了!Department这个类在AppClassLoader里找不到~

遇到这个问题后,我一下慌了,这个报错的东西我没见过,也不知道是哪里错了,所以只能问问度娘和谷歌了。

网上原理讲了很多,简单的理解就是Hessian序列化Map对象的时候出错了,
在consumer端序列化了object.map对象,在provider端解析不到object这个类,现在大致猜测问题可能出在对那个Department的引用问题上了,所以找不到才报错。

解决流程

第一步:

我先看一下出问题的consumer端,bug是怎么写出来的呢:

  • Controller层接口代码:
    在这里插入图片描述

  • 可以看到我在构造map时,传了3个对象,第三个对象是List<Department>,他是一个包含着Department类的列表。

  • 这时看一下我Controller层的Pom文件,里面是不是引用到了Department实体类。
    在这里插入图片描述在这里插入图片描述

  • 如上图所示,我Controller的Map在编译的时候,是可以找到Department这个对象的。

第二步:
  • 下面看一下我的provider端是怎么接收这个map并如何处理的。
  • ServiceImpl文件:
    在这里插入图片描述
  • 当打断点准备进到这个方法还没进入的时候,控制台就已经报错了。(心塞3秒)
  • 这时候问题就可以锁定在这个位置了,为什么还没进方法,就报错了呢?是不是这个map在自己反序列化的时候出问题了?
  • 在上面的时候我们已经提到,出现预警的根本问题是,两端找Department这个对象的时候找不到,那我的控制层已经引用了,会不会是这边没引用?好,我们来看一下Pom文件。
    在这里插入图片描述
  • 果然,这边没有引用那个system-api,这里找不到Department对象,那解决方法就很明显了,加上system-api这个引用,让他能找到Department对象就好了!(嘻嘻嘻~ 真的这么简单嘛~~)
    在这里插入图片描述
  • 噢耶! 问题真的就这样解决了!谢天谢地!!红红的预警信息不再提示了,自己又学会了一招!

这里面原理方面我说的很少,因为网上已经有很多了,我po几个参考地址,对原理执着的朋友可以看看,原创不易,希望获得你的赏赞哦~~


参考文章:
https://www.jianshu.com/p/dff4887cbeed
https://blog.csdn.net/zgyzgyzgy3338759/article/details/11022551

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值