我遇到序列化对象具有不匹配的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(使用十六进制查看器/编辑器)..任何想法我怎么能克服这个?感谢
答案 0 :(得分:2)
我会将serialVersionUID设置为1,当您收到错误消息时
serialVersionUID=-1023774639622504485 local class serialVersionUID=1
你知道如果你将serialVersionUID更改为-1023774639622504485
L或者它是什么,它将与你当前的匹配。这将允许您通过uid检查。