JAVA Redis 反序列化之序列ID不一致问题解决(serializer.support.SerializationFailedException)!!!!!!!!

该异常问题仅针对序列ID不同处理,其他的反序列问题。请根据异常日志分析查结果。

redis 序列化后,再反序列化时可能出现以下异常内容:

Cannot deserialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to deserialize payload. Is the byte array a result of corresponding serialization for DefaultDeserializer?; nested exception is java.io.InvalidClassException: com.garc.help.support.auth.User; local class incompatible: stream classdesc serialVersionUID = 5612540644495544470, local class serialVersionUID = 4637095634728829178

异常解释:

java 类 com.garc.help.support.auth.User 在反序列化时本地序列化ID与获取ID不一致,

序列化ID 5612540644495544470 和 4637095634728829178 不同

异常原因:

因为java类 User 在序列化时的ID是随机生成,导致ID不一致,出现该问题的可能方式为两个不同的代码分支版本(不同分支,代码内容会存在差异,序列化ID生成也存在差异。)

解决方式:

使用自定义序列ID,将 User 类实现接口  Serializable 类 ,继承 序列ID变量,并定义ID值

private static final long serialVersionUID = 1L;

PS:异常内容明确说明是哪个类出现了反序列化错误,所以只需要对指定的异常类 完成自定义序列化ID即可

猜你喜欢

转载自blog.csdn.net/Qensq/article/details/105680881
今日推荐