Problemi con oggetto serializzato e diverse JRE

di il
4 risposte

Problemi con oggetto serializzato e diverse JRE

Ciao a tutti, vorrei sottoporvi uno strano problema che mi è capitato: ho serializzato un oggetto, una TreeMap che usa come key un oggetto Date e come valore un BigDecimal.
Sul PC del lavoro non mi dà problemi, mentre quando avvio il jar eseguibile sul PC di casa alcune delle date salvate non appaiono. Il jar è stato compilato con una JRE 1.8.u72, mentre a casa ho installata la 1.8.u151.

Ho provato a far girare l'eseguibile anche sul mio portatile, che monta la 72, e tutto funziona correttamente. Sapete se è cambiato qualcosa nella serilizzazione tra queste versioni?

Grazie per l'aiuto!

4 Risposte

  • Re: Problemi con oggetto serializzato e diverse JRE

    Precisa meglio il problema: hai una eccezione in fase di de-serializzazione? (in tal caso, quale eccezione?) o è la tua applicazione che si comporta diversamente?

    Posta del codice, eventualmente, almeno le parti più rilevanti.
  • Re: Problemi con oggetto serializzato e diverse JRE

    Ciao, non lancia nessuna eccezione, semplicemente carica il file con readObject() ma alcune coppie (chiave, valore) della TreeMap sono assenti: se con il normale funzionamento ho tutti i giorni, ad es. dal 1/12 al 15/12, sotto le nuove versioni della JVM salto dal 10/12 direttamente al 15/12, come se vedesse alcune chiavi duplicate (infatti uno dei miei dubbi è che ci sia qualche errore nell'override di equals e hashcode per l'oggetto data, ma anche qui, come mai un comportamento diverso tra due JVM?)
    Appena torno in ufficio proverò ad isolare le parti di codice più significativo e le posterò qui.
  • Re: Problemi con oggetto serializzato e diverse JRE

    quaro ha scritto:


    Ciao, non lancia nessuna eccezione, semplicemente carica il file con readObject() ma alcune coppie (chiave, valore) della TreeMap sono assenti: se con il normale funzionamento ho tutti i giorni, ad es. dal 1/12 al 15/12, sotto le nuove versioni della JVM salto dal 10/12 direttamente al 15/12, come se vedesse alcune chiavi duplicate
    Intanto, stampa l'oggetto (il TreeMap) de-serializzato. TreeMap ha un "buon" toString() per cui vedi bene tutte le entry ordinate.

    quaro ha scritto:


    infatti uno dei miei dubbi è che ci sia qualche errore nell'override di equals e hashcode per l'oggetto data
    Giusto per chiarire: TreeMap, essendo una map "sorted", non si basa su equals/hashCode delle chiavi. Si basa su Comparable (Date è Comparable) o su un Comparator esplicito.
    E il compareTo() di Date è corretto (oltre che "banale") e non è cambiato affatto perlomeno da Java 5 in poi, per quanto posso vedere ora (non ho verificato su Java 9 ma dubito sia cambiato).
  • Re: Problemi con oggetto serializzato e diverse JRE

    Lunedì appena ho sottomano il codice faccio queste prove. Intanto grazie per avermi indirizzato su cosa controllare e buon weekend!
Devi accedere o registrarti per scrivere nel forum
4 risposte