/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Gem med Serializable
Fra : Martin Møller Bæk


Dato : 17-01-03 01:21

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?

Mvh
Martin MB


 
 
Jes Søndergaard (17-01-2003)
Kommentar
Fra : Jes Søndergaard


Dato : 17-01-03 10:41

"Martin Møller Bæk" <martin@nospam.aflame.dk> wrote:
> ... 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.

Fandt lige følgende link via Google:
http://www.jguru.com/faq/view.jsp?EID=13165

/Jes



Lars Dam (17-01-2003)
Kommentar
Fra : Lars Dam


Dato : 17-01-03 11:18

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"

Martin Møller Bæk (17-01-2003)
Kommentar
Fra : Martin Møller Bæk


Dato : 17-01-03 17:52

Tak for svarene.
Jeg kigger på det.

Mvh
Martin


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste