我有一個對象如下:的Java Seralization和Deseralization
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;
}
}
我已經收集了大量的數據,構造的對象,如上面的類,並將其seralized到磁盤。
我忘記包含在類文件中的一個轉儲事項是訪問每個對象的值的方法。例如,訪問特定對象的cId值。
我修改類定義添加這樣的方法,但後來我不能deseralize對象回記錄類和得到這個運行時錯誤:
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但不是很確定如何?任何想法都會受到歡迎!
你會發現在這個問題上你的問題很好的解釋:http://stackoverflow.com/q/285793/1916110 – Tom