java - 反序列化定义已更改的类

标签 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

最佳答案

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

另一方面,如果您更改了基类的数据类型或继承,则除了恢复更改之外您无能为力。

关于java - 反序列化定义已更改的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27594052/

相关文章:

java - org.eclipse.swt.widgets.Table - 添加项目

java - 无法让图像移动到我想要的位置(并持续更新)?

java - Spark 流停止

.net - 覆盖特定 .NET 类型的序列化

java - 为不同端点切换 JSON 序列化器

ruby - 相当于 ActiveRecord 的 `serialize` 方法的 Mongoid

java - 检查数组索引中的数据

java - 未报告的异常异常;必须被捕获还是被宣告被抛出?

java - gemfire 自定义序列化没有帮助

c++使用构造函数作为成员函数(用于序列化)