2009-04-01 10 views

Antwort

13

Wenn Sie den Code noch nicht geändert haben, könnten Sie wahrscheinlich das serialver-Tool (Teil des JDK) ausführen und sehen, was es generiert. Ich glaube das wird dir was zum berechnen seriVersionUID bringen.

Here is a brief article on serialver.

+2

Stellen Sie sicher, dass Sie dies mit genau der gleichen JVM tun, mit der Sie den Code ursprünglich kompiliert haben! – Eddie

+1

Dies sollte auch auf einer anderen JVM funktionieren, da andernfalls Klassendateien und serialisierte Objekte nicht über JVMs hinweg portierbar wären (was sie sind). – Thilo

+4

Die Java-Objekt-Serialisierungsspezifikation, Abschnitt 4.6, erläutert, wie die serialVersionUID bei internen Klassen möglicherweise nicht kompatibel zu JVMs ist, weil Implementierungen unterschiedliche Namen für synthetische Member erzeugen. Ich habe gesehen, dass dies in der Praxis auch mit zwei Sun JVMs passiert ist. – Martin

3

Wenn Sie Eclipse verwenden, es hat eine „schnelle Lö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 mindestens die Klassendateien für sie haben, verwenden Sie das Befehlszeilenprogramm "serialver" (kommt mit JDK).

6

Was ich normalerweise tue, ist, ich kompiliere den Code, versuche, es auszuführen, und die erhöhte Ausnahme erwähnt die beleidigende SVUID, so dass ich es in meinem eigenen Code ausschneiden und einfügen kann. Grob, aber es funktioniert.

Verwandte Themen