Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di mist3r0
    Registrato dal
    Mar 2007
    Messaggi
    103

    Errore di Serializzazione

    salve ragazzi, ho un problema che riguarda la serializzazione di una LinkedList, vi spiego meglio il problema:

    Questa è la classe che dovrei serializzare:

    Codice PHP:
    public class Applicazione implements Serializable{

        private 
    AssAmbientalista lnkAssAmbientalista;

        private 
    LinkedList<Compagnia_PetroliferalistaCompagnie;

        private  
    LinkedList <Pozzo>listaPozzi;
        
        private 
    LinkedList<AreaGeograficalistaAree;
        
        private 
    LinkedList<AssAmbientalistalistaAss;
        
        private 
    File file;

        public 
    Applicazione() {

            
    listaCompagnie = new LinkedList<Compagnia_Petrolifera>();

            
    listaPozzi = new LinkedList<Pozzo>();
            
            
    listaAree = new LinkedList<AreaGeografica>();
            
            
    listaAss = new LinkedList<AssAmbientalista>();
            
            
    file=null;
        }
        
        public 
    Applicazione(Applicazione o) {

            
    listaCompagnie o.getCompagnie();

            
    listaPozzi o.getPozzi();
            
            
    listaAree o.getAree();
            
            
    listaAss o.getAssociazioni();
            
            
    file=null;
        }
        
        public 
    void serializza(){
            try {
            
    file = new File("dati.dat");
            
            
    ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));
              
            
    out.writeObject(this);
            
            
    out.close();
             }
            catch(
    IOException ex) {ex.printStackTrace();   }
        }
        

        public 
    void addCompagnia(Compagnia_Petrolifera p) {
            
    listaCompagnie.add(p);
        }

        public 
    void addPozzo(Pozzo p) {
            
    listaPozzi.add(p);
        }

        public 
    void removeCompagnia(Compagnia_Petrolifera p) {
            
    listaCompagnie.remove(p);
        }

        public 
    void removeCompagnia(Pozzo p) {
            
    listaPozzi.remove(p);
        }
        
        public 
    void addArea(AreaGeografica p) {
            
    listaAree.add(p);
        }
        
        public 
    void addAss(AssAmbientalista p) {
            
    listaAss.add(p);
        }

        public 
    void removeAss(AssAmbientalista p) {
            
    listaAss.remove(p);
        }
        
        public 
    LinkedList<AreaGeograficagetAree(){ return listaAree;}
        
        public 
    LinkedList<Compagnia_PetroliferagetCompagnie(){ return listaCompagnie;}
        
        public 
    LinkedList<PozzogetPozzi(){ return listaPozzi;}
        
        public 
    LinkedList<AssAmbientalistagetAssociazioni(){ return listaAss;}
        
        public 
    Pozzo getPozzo(String cod){
            
    Iterator it=listaPozzi.iterator();
            
            while(
    it.hasNext()){
            
                
    Pozzo p=(Pozzo)it.next();
                
                if(
    cod.equals(p.getCod())){
                    return 
    p;
                }
            }
            return 
    null;
        }
        
        public 
    Compagnia_Petrolifera getCompagnia(String codFisc){
            
    Iterator it=listaCompagnie.iterator();
            
            while(
    it.hasNext()){
            
                
    Compagnia_Petrolifera c=(Compagnia_Petrolifera)it.next();
                
                if(
    c.getCodFisc().equals(codFisc)){
                    return 
    c;
                }
            }
            return 
    null;
        }
        public 
    AssAmbientalista getAssociazione(String nome){
            
    Iterator it=listaAss.iterator();
            
            while(
    it.hasNext()){
            
                
    AssAmbientalista c=(AssAmbientalista)it.next();
                
                if(
    c.getNome().equals(nome)){
                    return 
    c;
                }
            }
            return 
    null;
        }



    La serializzazione va a buon fine se io inserisco oggetti in tutte le LinkedList, tranne che in "LinkedList <Pozzo>listaPozzi".
    Premetto che pozzo è una classe astratta, e ha 2 eredi, che vengono inseriti nella LinkedList listapozzi.
    Nella LinkedList "listapozzi", vado ad inserire ogni pozzo aggiunto, ma quando vado a serializzare la classe mi da quest'errore:
    java.io.NotSerializableException: java.util.LinkedList$ListItrat java.io.ObjectOutputStream.writeObject0(ObjectOutp utStream.java:1156)

    Tutte le classi contenute dentro Pozzo, gli eredi, e tutte quelle che devede presenti nelle liste implementano l'interfaccia Serializable.

    Mi sapete dire il perchè di questo errore riferito solo a quella lista??

    Le altre le ho testate e vengono serializzate senza nessun problema!!!

    M|$T3R®

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Errore di Serializzazione

    Originariamente inviato da mist3r0
    java.io.NotSerializableException: java.util.LinkedList$ListItr
    Bisognerebbe vedere bene il tuo codice. Comunque un piccolo aiuto lo dà il messaggio della eccezione, cioè il nome della classe che non è serializzabile. La classe indicata è java.util.LinkedList$ListItr che è una inner class privata di LinkedList. È semplicemente la classe che implementa il ListIterator della lista e tale classe, nota bene, non è serializzabile.

    Tutto questo mi porta a pensare che da qualche parte, nei tuoi oggetti, c'è un oggetto ListIterator che non dovrebbe essere serializzato.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di mist3r0
    Registrato dal
    Mar 2007
    Messaggi
    103
    RISOLTO!!

    Grazie tante, avevo dichiarato un Iterator, nella classe Pozzo, e questo non è serializzabile!!



    Grazie ancora, ciao ciao
    M|$T3R®

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.