【发布时间】:2013-01-08 09:15:32
【问题描述】:
我有一个对象如下:
public class Records implements java.io.Serializable{
private int cId;
private int pId;
private int vlaue;
private int tag;
public Records(int c, int p, int v, int t){
this.cId=c;
this.pId=p;
this.value=v;
this.tag=t;
}
}
我已经收集了大量数据,在上面的类中构造了对象并将它们序列化到磁盘。
我忘记包含在类文件中的一个转储是访问每个对象的值的方法。例如,访问特定对象的 cId 值。
我修改了类定义以添加此类方法,但后来我无法将对象反序列化回 Records 类并出现此运行时错误:
java.io.InvalidClassException: Records; local class incompatible: stream classdesc serialVersionUID = -1232612718276774474, local class serialVersionUID = -8244963718951538904
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:579)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1600)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1513)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1749)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)
at DeSerialise.main(DeSerialise.java:21)
我想我需要告诉java它们是相同的定义并修改serialVersionUID但不太确定如何?欢迎任何想法!
【问题讨论】:
-
你会在这个问题上找到很好的解释:*.com/q/285793/1916110
标签: java serialization deserialization object-serialization