On Fri, 17 Jan 2003 01:20:50 +0100, Martin Møller Bæk
<martin@nospam.aflame.dk> wrote:
>Hej NG
>
>Jeg har et spørgsmål ang. gemning af data i en fil
>som et Serializable object. Hvis man gemmer en fil
>sådan med en JVM version og så senere læser det ind
>med en anden version, kan det så give problemer.
>Er der nogen, der har nogle erfaringer?
Problemet er ikke JVM versionen, men den serialVersionUID der blvier
givet din klasse når denne kompiles. Denne skifter værdi hver gang du
kompiler din klasse; og har du to class filer af den samme kildetekst
der er kompileret på forskellige tidspunkter, er disse ikke binært de
samme(!).
Læs:
http://java.sun.com/products/jdk/1.2/docs/guide/serialization/spec/serialTOC.doc.html
Specielt afsnit 5.
afprøve også værktøjet serialver til at detecte en klasses versions
id:
> serialver com.blah.buh.MyClass
com.blah.buh.MyClass: static final long serialVersionUID =
-539411742081354656L;
Som du kan se er outputtet lige til at cut/paste ind i din klasse.
Hvis du sætter denne linie ind får din klasse _ikke_ et nyt
serialVersionUID hvergang du kompiler, og du behøver derfor ikke
bekymre dig om at have forskellige udgaver af din klasse liggende
flere steder. Du skal blot sørge for at de felter dom bliver streamet
ikke ændrer sig, og hvis de gør så må du selv håndtere dette i hhv.
writeObject() og readObject() metoderne.
>Mvh
>Martin MB
vh. ld
---
"Time is the fire in which we burn"