覆盖java序列化不匹配

时间:2012-09-15 12:37:17

标签: java serialization deserialization

我遇到序列化对象具有不匹配的serialversionuids的问题。 这是我的情景...

版本1。 A类扩展了B类,两者都实现了可序列化,B类没有串行UID

第2版。 A类扩展了B类,两者都实现了可序列化,B类现在有一个串行UID *,CLASS A的serialuid与版本1相同。

遗憾的是我没有访问java源代码,所以我在这里和其他网站上查了一下,通过覆盖我的objectinputstream的readclassdescriptor并使用它来读取对象找到了一种解决方法..但是,我按照示例来写信但我的代码仍然报告serialversionuids(B类)仍然不匹配..我甚至尝试了另一种解决方案,我将B类版本2的serialversionuid“注入”到B类v1的数据然后使用objectinputstream读取但我不能在文件中找到继承B类v1对象的serialversionuid(使用十六进制查看器/编辑器)..任何想法我怎么能克服这个?感谢

1 个答案:

答案 0 :(得分:2)

我会将serialVersionUID设置为1,当您收到错误消息时

serialVersionUID=-1023774639622504485 local class serialVersionUID=1

你知道如果你将serialVersionUID更改为-1023774639622504485 L或者它是什么,它将与你当前的匹配。这将允许您通过uid检查。