反序列化其定义已更改的类

时间:2014-12-21 21:31:20

标签: java serialization

我犯了一个错误,我需要找到一种方法来恢复。我正在开展一项需要大量样本的调查项目。这周我不在城里,所以我拿了一些样品并使用序列化保存数据,这样我就可以在我离开的时候使用它。我急于取得进展,我想我改变了样本类结构的基类,现在我再也看不到样本。我不记得我在基类中改变了什么。

有没有办法从中恢复。我将尝试使用反射api。任何建议都会有所帮助。


我也试图使用jdeserialize而我没有运气。要开始,我使用的代码如下:

String thePath = getPath();
jdeserialize my = new jdeserialize(thePath);

List con = my.getContent();
System.out.println("Size: " + con.size());

总是告诉我零。在某个地方有一个很好的例子吗?

错误消息是:

  

com.sig.ccm.util.LearningFrame; local class incompatible: stream classdesc serialVersionUID = -8423641452900611674, local class serialVersionUID = 6525488225233160191

1 个答案:

答案 0 :(得分:3)

你没有说明你得到了什么错误,但是如果它涉及serialVersionUID值,你只需要将其更改或定义为“预期”'错误消息中给出的值。

另一方面,如果您更改了基类的数据类型或继承,除了还原更改之外,您无法做任何事情。