JAVA Redis 反序列化之序列ID不一致问题解决(serializer.support.SerializationFailedException)!!!!!!!!
redis 序列化后,再反序列化时可能出现以下异常内容:Cannot deserialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to deserialize payload. Is the byte array a resu...
该异常问题仅针对序列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即可
更多推荐
所有评论(0)