local class incompatible: stream classdesc serialVersionUID = -6513709415809811854, local class serialVersionUID = -7166464393377422509
今天在更新项目后,接口抛 local class incompatible: stream classdesc serialVersionUID = -6513709415809811854, local class serialVersionUID = -7166464393377422509 异常。通过查询相关信息发现是redis 在做缓存的时候序列化失败造成的。原因是同事在Java bean里面新增加了几个属性,造成序列化失败。
解决方法有两种
一:
情况缓存数据库里面的缓存。刷新接口就好了
连接redis 选择库, flushdb
二:
在java bean 中 只能序列化id
/**
* 序列化id
*/
private static final long serialVersionUID = 4125096758372084309L;
编译后,重新打包发布就好了
总结:
两个方法都可以解决问题,但是各个方法各有优劣
方法一: 解决起来,快速,方便,但是如果缓存中数据比较多,会造成缓存雪崩,数据库的压力突然真加。同时下次新加字段,还是会出现这个问题,治标不治本。 所有不太推荐使用这个方法
方法二: 相比较方法一,需要修改代码,并重新编译,打包,并重启服务,繁琐点,但是这次解决后,以后不会在出现这个问题。一劳永逸。所有比较推荐用这个方法