Serialization, Laden klappt nicht wenn die Klasse geändert wurde

nossek

Aktives Mitglied
Guten Tag,

ich habe eine Klasse geschrieben, wobei die Instanzvariabeln eines Objektes per Serialisation gespeichert werden sollen. Das klappt soweit.

soweit klar: Wenn man ein Objekt dieser Klasse speichert und dann der Klasse eine weitere Instanzvariable zuweist, dann kann man vorher gespeicherte Objekte nicht mehr öffnen, weil das Format nicht mehr stimmt.

Verwirrend finde ich aber, daß dieses Problem auch auftritt, wenn ich der Klasse eine neue Methode hinzugefügt habe. Folgende Exception tritt auf:
java.io.InvalidClassException: CardFile; local class incompatible: stream classdesc serialVersionUID = 1258582135629182526, local class serialVersionUID = 8562192200626132835

Werden die Methoden denn auch mitgespeichert? Muß man alle Methoden mit "transient" modifizieren? Oder muß ich den Fehler woanders suchen?

Gruß Nossek
 
Zuletzt bearbeitet:
Ich bin mir nicht mehr sicher, aber vielleicht hilft es dir nur schon, wenn du eine solche ID anlegst (und nur änderst, wenn du eine neue Variable hinzufügst). Ist aber wohl etwas unschön und kann evtl. doch noch einen anderen Error werfen.
 
aber vielleicht hilft es dir nur schon, wenn du eine solche ID anlegst (und nur änderst, wenn du eine neue Variable hinzufügst)
Das wäre die Lösung für dieses Problem, totzdem ist Objekt-Serialisierung sichterlich nicht die beste Möglichkeit, Daten länger zu speichern.
 
Danke faetzminator und tfa.
Das mit "private static final long serialVersionUID = xxxx" werde ich mal versuchen.

@tfa: was wäre denn eine Alternative? Hibernate kenne ich nur vom Namen her... Serilisation erschien mir erstmal sehr praktisch...
 

Neue Themen


Zurück
Oben