2012-11-28 5 views
7

Ich hatte ein Java-Objekt in der Datenbank gespeichert und nach einigen Tagen habe ich meine jre-Version geändert. Jetzt als ich versuchte, das gleiche Objekt zu lesen, ich folgende Ausnahme erhalten:Wie wird InvalidClassException SerialVersionUID loswerden?

Exception in thread "main" java.io.InvalidClassException: 
SerializeMe; local class incompatible: stream classdesc 
serialVersionUID = -6377573678240024862, local class serialVersionUID = -8204757486033751616 

Wie kann ich das beheben, wie kann ich das gespeicherte Objekt zu erhalten?

bitte helfen Sie mir.

+4

Deshalb sollten Sie Ihre SUID übrigens immer explizit definieren. – Perception

Antwort

8

Wenn Sie den Quellcode dieser Klasse beeinflussen können und JRE nur eine Sache war, die sich geändert hat, können Sie höchstwahrscheinlich das Objekt deserialisieren, das von älterer JVM serialisiert wurde. Definieren Sie einfach folgendes Feld in der Klasse, das deserialisiert werden soll:

private static final long serialVersionUID = -6377573678240024862L;