我犯了一个错误,我需要找到一种方法来弥补。我正在进行一个需要大量样本的调查项目。我这周不在城里,所以我拿了一些样本并使用序列化保存数据,以便我可以在离开时使用它。在我急于取得进展的过程中,我想我更改了示例类结构的基类,现在我无法再读取示例了。我不记得我在基类中更改了什么。
有什么办法可以恢复吗?我将尝试使用反射 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
最佳答案
您没有说明遇到了什么错误,但如果它涉及 serialVersionUID
值,您只需将其更改或定义为错误消息中给出的“预期”值.
另一方面,如果您更改了基类的数据类型或继承,则除了恢复更改之外您无能为力。
关于java - 反序列化定义已更改的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27594052/