Moin.
Ich probiere derzeit, Daten zu speichern, indem ich die Klassen serialisiere und in einer Datei abspeichere.
Wenn ich die Klasse aber änder, kann ich die alten Objekte nicht mehr laden.
Fehlermeldung:
Gibt es dafür eine Lösung?
Gruß,
SargTeX
P.S.: Die Objekte werden folgendermaßen geladen & gespeichert:
Ich probiere derzeit, Daten zu speichern, indem ich die Klassen serialisiere und in einer Datei abspeichere.
Wenn ich die Klasse aber änder, kann ich die alten Objekte nicht mehr laden.
Fehlermeldung:
Das würde bedeuten, dass die Benutzer der Software bei jedem Update alle Daten verlieren würden ^ ^.Exception in thread "main" java.io.InvalidClassException: library.school.Language; local class incompatible: stream classdesc serialVersionUID = -2738708014350545579, local class serialVersionUID = 610895515635440888
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 java.util.ArrayList.readObject(ArrayList.java:696)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:991)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1865)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1963)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1887)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)
at library.school.LanguageContainer.load(LanguageContainer.java:48)
at library.school.LanguageContainer.getInstance(LanguageContainer.java:36)
at Test.LangugeTest.main(LangugeTest.java:20)
Java Result: 1
Gibt es dafür eine Lösung?
Gruß,
SargTeX
P.S.: Die Objekte werden folgendermaßen geladen & gespeichert:
Quellcode
- //load
- FileInputStream fileIn = new FileInputStream("dateiname.data");
- ObjectInputStream objectIn = new ObjectInputStream(fileIn);
- Klassenname instance = (Klassenname) objectIn.readObject();
- //save
- FileOutputStream fileOut = new FileOutputStream("dateiname.data");
- ObjectOutputStream objectOut = new ObjectOutputStream(fileOut);
- objectOut.writeObject(this);
- objectOut.close();