如何解决反序列化期间出现InvalidClassException异常
在从会话反序列化对象期间获取InvalidClassException。我们存储在数据库中的用户数据,并在对服务器的下一个请求中,从表中加载用户数据以进行少量检查。原始值serialVersionUID在该类中定义为1L,并且该类从很长时间以来就没有变化。不知道在反序列化对象时如何收到这个新的serialVersionUID值79642633333,并且此错误在并非到处都是的几个群集/服务器中出现。
我检查了类路径中是否存在重复的jar版本或重复的类。
java.io.InvalidClassException: com.test.User; local class incompatible: stream classdesc serialVersionUID = 1,local class serialVersionUID = 79642633333
Value defined in the class:
private static final long serialVersionUID = 1L;
解决方法
在反序列化期间,接收方JVM将与对象关联的唯一ID与本地类Unique ID进行比较,即JVM还将基于相应的.class文件创建唯一ID。接收器系统。如果两个唯一ID都匹配,则将仅执行反序列化。否则,我们将得到InvalidClassException
。这个唯一的标识符不过是SerialVersionUID。
因此,基本上,序列化期间的SerialVersionUID应该与SerialVersionUID反序列化相匹配。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。