13 Stimmen

Wie kann ich die serialVersionUID eines serialisierten Java-Objekts herausfinden?

Ich habe mehrere serialisierbare Klassen, die ohne Angabe einer serialVersionUID kompiliert wurden. Ich muss nun einige Datenelemente zu diesen Klassen hinzufügen, möchte aber einige bereits serialisierte Objekte beibehalten.

Gibt es eine Möglichkeit, die serialVersionUID dieser serialisierten Objekte herauszufinden, so dass ich die gleiche ID im Quellcode angeben kann?

13voto

TofuBeer Punkte 59410

Wenn Sie den Code noch nicht geändert haben, können Sie wahrscheinlich das Serialver-Tool (Teil des JDK) ausführen und sehen, was es erzeugt. Ich glaube, damit erhalten Sie das, was die berechnete seriVersionUID ist.

Hier finden Sie einen kurzen Artikel über Serialver.

6voto

Varkhan Punkte 16313

Normalerweise kompiliere ich den Code, versuche ihn auszuführen, und die ausgelöste Ausnahme erwähnt die fehlerhafte SVUID, so dass ich sie ausschneiden und in meinen eigenen Code einfügen kann. Grob, aber es funktioniert.

3voto

Thilo Punkte 248982

Wenn Sie Eclipse verwenden, gibt es eine "Schnelllösung", um die berechnete serialVersionUID zu erzeugen. Dies funktioniert natürlich nur, wenn Sie die (genaue) Quelle für die Klassen zum Zeitpunkt der Serialisierung der Objekte haben.

Wenn Sie zumindest die Klassendateien dafür haben, verwenden Sie das Kommandozeilentool "serialver" (wird mit dem JDK geliefert).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X