异常信息:
Caused by:java. io. InvalidClassException: com. eastcom xxx.xxxxxx. bean. AlarmReq; local class incompatible: stream classdesc serialversionUID =8050743254081999660, local class seriaiversionuId = 6638111461888145730
异常原因:
对象序列化的时候会存到redis内存中,然后又再通过 redisTemplate.getValueSerializer().deserialize() 方法将数据反序列化到bean对象,如果当前bean对象发生变化的话,即加了属性的话,就会导致serialVersionUID会变。
由于序列化时该类的serialVersionUID是JVM根据类名及其属性的哈希值生成的。当类的属性有变动时,serialVersionUID也会相应变动,从而导致redis中的老数据反序列化时,serialVersionUID匹配不上而报错。
解决方案:
一:
在报错类属性前添加代码
private static final long serialVersionUID = 8050743254081999660L;
这里的UID与上面的stream classdesc serialversionUID对应
二:
清空当前服务所链接的redis数据;
flushdb