Java反序列化失败 java.io.InvalidClassException: Serialization.Box; local class incompatible
2022/1/6 9:04:54
本文主要是介绍Java反序列化失败 java.io.InvalidClassException: Serialization.Box; local class incompatible,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
错误
记一次错误,在实现对Box类的反序列化的过程中出现了错误java.io.InvalidClassException: Serialization.Box; local class incompatible: stream classdesc serialVersionUID = -3710107360465404214, local class serialVersionUID = 1882054695999505670
错误的原因是由于UID是不匹配的,JVM拒绝进行反序列化
原因
产生错误的原因要从序列化和反序列化来看,当我们进行序列化的时候,序列化的对象会被标记一个类的版本号,就是serialVersionUID,而serialVersionUID是基于class的结构而产生的,所以即使是原本的class,如果对其进行了修改(添加了一个类,一个方法...)都会产生serialVersionUID的变化,而进行反序列化的时候,JVM会比较对象和其class的UID是否相同,如果不相同,JVM就会认为是这个类不是之间进行序列化的类,由此产生错误
原因就是当我在进行序列化之后,我对Box类进行了修改,增加了一个变量
我们可以通过命令serialver + 类名
查询类的UID
修改类前
修改类后
UID出现问题
解决方法
为了实现在序列化之后还能够对class进行修改的操作的要求,一开始就使用serialver
得到class的UID,然后写在类中,就能实现UID的固定,但是 ,这需要我们要非常小心的注意类。
这篇关于Java反序列化失败 java.io.InvalidClassException: Serialization.Box; local class incompatible的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign学习入门:轻松掌握微服务通信
- 2024-12-27OpenFeign学习入门:轻松掌握微服务间的HTTP请求
- 2024-12-27JDK17新特性学习入门:简洁教程带你轻松上手
- 2024-12-27JMeter传递token学习入门教程
- 2024-12-27JMeter压测学习入门指南
- 2024-12-27JWT单点登录学习入门指南
- 2024-12-27JWT单点登录原理学习入门
- 2024-12-27JWT单点登录原理学习入门