IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
marek.zimic
Člen
Avatar
marek.zimic:10.6.2014 15:21

Mám aplikaci na evidenci, ukládání do streamů, JTable, prostě přidám v aplikaci nějaký objekt, ukáže se v tabulce, jakmile aplikaci znovu zavřu a otevřu tak tam furt je a je uložen.

Konkrétně třídu a jejího potomka. Potřebuju aby ten potomek implementoval Serializable. Na to mi bylo napsáno, že constructor is not valid a abych přidal defaultní konstruktor pro předka i potomka, to jsem udělal a teď mi to vypisuje chybu s ID:

CHYBA: Nelze načíst soubor. logika.Absolvent; local class incompatible: stream classdesc serialVersionUID = -3143379283109­629711, local class serialVersionUID = 6529685098267757690

Hledal jsem, ale řešení jsem moc nepochopil, budu rád za každou podrobně rozepsanou pomoc. :-)

 
Odpovědět
10.6.2014 15:21
Avatar
Odpovídá na marek.zimic
Luboš Běhounek Satik:10.6.2014 15:28

Uložil jsi třídu v jedné verzi a snažíš se ji načíst v jiné, při každé změně struktury třídy se to ID přegeneruje, pokud ho nemáš nastavené manuálně.

Manuálně ho můžeš nastavit tak, že do třídy přidáš

static final long serialVersionUID = 1L;
Nahoru Odpovědět
10.6.2014 15:28
https://www.facebook.com/peasantsandcastles/
Avatar
marek.zimic
Člen
Avatar
Odpovídá na Luboš Běhounek Satik
marek.zimic:10.6.2014 15:54

a kam všude mám dopsat tenhle atribut ID?

 
Nahoru Odpovědět
10.6.2014 15:54
Avatar
Odpovídá na marek.zimic
Luboš Běhounek Satik:10.6.2014 15:56

Jen jako člena té třídy, kterou serializuješ.

Nahoru Odpovědět
10.6.2014 15:56
https://www.facebook.com/peasantsandcastles/
Avatar
marek.zimic
Člen
Avatar
Odpovídá na Luboš Běhounek Satik
marek.zimic:10.6.2014 16:08

To jsem udělal, vyhazuje to stejnou chybu...

 
Nahoru Odpovědět
10.6.2014 16:08
Avatar
marek.zimic
Člen
Avatar
marek.zimic:10.6.2014 16:10

teda stejnou ne, tuhle:
logika.Absolvent; local class incompatible: stream classdesc serialVersionUID = -3143379283109­629711, local class serialVersionUID = 1

 
Nahoru Odpovědět
10.6.2014 16:10
Avatar
Odpovídá na marek.zimic
Luboš Běhounek Satik:10.6.2014 16:25

Však se snažíš se deserializovat něco, co jsi předtím serializoval bez udané verze (takže se tam automaticky vygenerovalo číslo verze: -3143379283109­629711), ale tvoje třída nyní má verzi 1.

Otevírat můžeš jen to, co jsi uložil stejnou verzí.

Nahoru Odpovědět
10.6.2014 16:25
https://www.facebook.com/peasantsandcastles/
Avatar
marek.zimic
Člen
Avatar
marek.zimic:10.6.2014 16:45

Díky, ale na mě musíš asi pomalu... přidal jsem atribut, jak jsi řekl. Vyhazuje to, co jsem sem napsal. Nechápu další krok.

 
Nahoru Odpovědět
10.6.2014 16:45
Avatar
Odpovídá na marek.zimic
Luboš Běhounek Satik:10.6.2014 17:02

To co jsi uložil předtím ve verzi -3143379283109­629711, teď prostě neotevřeš, protože je to v souboru označené jako verze -3143379283109­629711, ale napsáním toho ID jsi té třídě řekl, že umí otevírat jen verzi 1.

Řešením je teď po označení za verzi 1 ty data vytvořit a uložit znovu a pak už ti to půjde otevřít, dokud to číslo verze nezměníš nebo dokud nezměníš strukturu třídy takovým způsobem, který by to naboural.

Případně to ID změň na to -3143379283109629711 a otevřeš i ty staré soubory, pokud ti nevadí tam mít takovéhle hausnumero :)

Editováno 10.6.2014 17:03
Nahoru Odpovědět
10.6.2014 17:02
https://www.facebook.com/peasantsandcastles/
Avatar
marek.zimic
Člen
Avatar
marek.zimic:10.6.2014 17:08

Super, pochopil jsem. Díky moc :-)

 
Nahoru Odpovědět
10.6.2014 17:08
Avatar
marek.zimic
Člen
Avatar
marek.zimic:11.6.2014 15:11

Ještě bych měl dotaz... když mám takhle nastavený ID, tak se mi v pořádku ukládaj ty objekty, všechno se mi zobrazuje v JTable. Jenže se mi nějaký atributy z těch objektů, který mám v tabulce zobrazujou špatně, resp. mi je to nevrací vůbec a dává tam nějakou defaultní hodnotu. Vypadá to tak, že přidám nějakou osobu do seznamu a prostě všechny mají stejné jméno i příjmení. Jakmile odstraním to ukládání, atribut ID, tak vše funguje jak má.

 
Nahoru Odpovědět
11.6.2014 15:11
Avatar
Odpovídá na marek.zimic
Luboš Běhounek Satik:11.6.2014 15:16

Takhle bez kódu mě teď nic nenapadá - zkus to sem hodit :)

Editováno 11.6.2014 15:16
Nahoru Odpovědět
11.6.2014 15:16
https://www.facebook.com/peasantsandcastles/
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 12 zpráv z 12.