Eclipse eclipse (serialVersionUID) automatisch neu generieren nach Änderung

Raziell

Bekanntes Mitglied
Hi,
gibt es eine Möglichkeit, dass die eclipse warnt, wenn ich die Signatur von Methoden einer serialisierten Klasse ändere aber vergesse die serialVersionUID neu zu generieren?

Noch besser wäre natürlich wenn die eclipse automatisch merkt wenn die serialVersionUID neu generiert werden muss und dies macht.

Danke
 
hast du schon überlegt, keine Id anzugeben, also bei jeder Änderung bzw. gar jedem Kompilieren automatisch eine neue zu vergeben?
Nachteil könnte höchstens sein, dass dieselbe Klasse an zwei verschiedenen Stellen kompiliert nicht kompatibel ist,
da muss man also aufpassen dass etwa Client + Server exakt dasselbe Jar der gemeinsamen Klassen verwenden usw.

per Definition ist das Setzen einer Id ja gerade dafür da, NICHT automatisch geändert zu werden

java - Eclipse auto-generation of serialVersionUID with each change - Stack Overflow
edit:
in deutsch 😉 :
Eclipse Auto-Generation von serialVersionUID mit jeder Änderung
 
Zuletzt bearbeitet von einem Moderator:
Sehe das so wie SlaterB, imho die die default Einstellung in Eclipse einfach falsch, bei fehlenden SUID eine Warnung auszugeben, in 99% der Fälle ist es nämlich genau das was man möchte:
Bei jedem kompilieren eine neue erzeugen um so eventuellen Versionskonflikten vorzubeugen.
 
Die serialVersionUID bei jedem kompilieren für jede Klasse neu zu generieren kommt leider nicht in Frage, da zum Beispiel Sessions von Benutzern serialisiert sind und repliziert werden. Beim neu kompilieren würden dann alle Benutzern Ihre Session verlieren, da sie nicht mehr repliziert werden können.

Es würde mir ja reichen wenn die eclipse mich fragt ob die serialVersionUID neu generieren möchte.

Danke
 
Zuletzt bearbeitet:
> Beim neu kompilieren würden dann alle Kunden Ihre Session verlieren, da sie nicht mehr repliziert werden können.

aber
"Bei Änderung der Klassen mit Feldern würden dann alle Kunden Ihre Session verlieren, da sie nicht mehr repliziert werden können."
ist schon ok? kannst du das so genau unterscheiden und sind solche Änderungen trotzdem derart häufig, dass du das automatisiert brauchst?

wenn du die SerialId änderst, dann musst du dir ja doch irgendwo auf einen Papierzettel eine Notiz machen, dass demnächst alle Sessions nix mehr taugen,
wie wärs wenn du dir diese Notiz auch so selber machst, und dann z.B. kurz vor dem Ernstfall per Text-Replace alle SerialVersionUID in einem Projekt von 25 auf 26 erhöhst?
oder du hast gar rein softwaremäßig in jedem erstellten Session-Objekt eine eingetragene Versionsnummer, Integer 25, 26, usw.
und wenn eine Session mit zu alter Version (aber doch passender ungeänderter Id) verarbeitet wird, gibts eine selbst erzeugte Fehlermeldung,

na das sind jetzt wilde manuelle Spekulationen, brauchst du nicht kommentieren wenn es nicht gefällt 😉
je nach deinen Anforderungen können sie auch technisch vielleicht gar nicht passen

ich persönlich sehe grundsätzlich wenig Sinn hinter,
wenn die Software fundamental ausgetausch wird, sollten doch wohl Programme aus sein, kurzlebig abgelegte serialisierte Daten nicht mehr benötigt werden,
alles längerfristige könnte in einem standardisierten XML-Format oder in einer Datenbank gespeichert werden?
musst du aber auch nicht näher erläutern

zur gewünschten Eclipse-Funktion kann ich nichts sagen
 

Zurück
Oben