[Risolto] [JAVA]File serializzato

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
racerider
Prode Principiante
Messaggi: 64
Iscrizione: sabato 14 maggio 2011, 13:28
Desktop: Gnome 3
Distribuzione: Ubuntu 14.04.1 LTS x64
Località: Perugia

[Risolto] [JAVA]File serializzato

Messaggio da racerider »

Buon pomeriggio a tutti, ho un piccolo problemino con il mio programma, prima di tutto vi spiego il problema:
Ho bisogno di x applicazioni che salvino un file e una app y che riesca a immagazzinare tutti i dati delle varie app x, ho pensato di risolvere con i file serializzati.
L'applicazione x (quella che andrà a scrivere) è questa

Codice: Seleziona tutto

import java.io.*;
public class M implements Serializable {

    Oggetto o[] = new Oggetto[10000];

    public static void main(String args[]) {
        FileOutputStream fout;
        ObjectOutputStream oos;
        M a=new M();
        a.o[0]=new Oggetto();
        a.o[0].s="test";
        try {
            fout = new FileOutputStream("file");
            oos = new ObjectOutputStream(fout);
            oos.writeObject(a);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

import java.io.Serializable;

public class Oggetto implements Serializable{
    String s=null;
}


mentre quella in scrittura è questa (il codice incriminato :D):

Codice: Seleziona tutto

import java.io.*;

public class M implements Serializable {

    static Oggetto o[] = new Oggetto[10000];

    public static void main(String args[]) {
        FileInputStream s;
        ObjectInputStream ois;
        M a;
        try{
            
            s=new FileInputStream("file");
            ois=new ObjectInputStream(s);
            a=(M)ois.readObject();
            System.out.println("prova:"+a.o[0].s);
            
        }catch(FileNotFoundException ex){
            System.out.println("file non trovato");
        }catch(IOException ex){
            ex.printStackTrace();
        }
        catch(ClassNotFoundException ex){
            System.out.println("classe non trovata");
        }
    }
}

import java.io.Serializable;

public class Oggetto implements Serializable{
    String s=null;
}
l'errore che mi da invece è il seguente:

Codice: Seleziona tutto

Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar 
java.io.InvalidClassException: M; local class incompatible: stream classdesc serialVersionUID = 7625462938416457373, local class serialVersionUID = 6505330590483448879
	at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:617)
	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1622)
	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
	at M.main(M.java:20)
BUILD SUCCESSFUL (total time: 0 seconds)
Ringrazio tutti in anticipo :)
Ultima modifica di racerider il domenica 10 maggio 2015, 18:06, modificato 1 volta in totale.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA]File serializzato

Messaggio da Zoff »

Aggiungi un campo serialVersionUID nella classe e assegnagli lo stesso valore.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
racerider
Prode Principiante
Messaggi: 64
Iscrizione: sabato 14 maggio 2011, 13:28
Desktop: Gnome 3
Distribuzione: Ubuntu 14.04.1 LTS x64
Località: Perugia

Re: [JAVA]File serializzato

Messaggio da racerider »

Scusa mi posteresti gentilmente il codice da aggiungere? :)
ho provato ad aggiungere
serialVersionUID f=a; e tutti gli import consigliati da netbeans ma sembra che mi dia errore in fase di build
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA]File serializzato

Messaggio da Zoff »

Aggiungi a TUTTE le classi M questa riga:

Codice: Seleziona tutto

private static final long serialVersionUID = 424242L;
Al posto di 424242L puoi mettere il numero che vuoi tu, l'importante è che sia uguale in tutte le classi M.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
racerider
Prode Principiante
Messaggi: 64
Iscrizione: sabato 14 maggio 2011, 13:28
Desktop: Gnome 3
Distribuzione: Ubuntu 14.04.1 LTS x64
Località: Perugia

Re: [JAVA]File serializzato

Messaggio da racerider »

grandissimo, ora legge, ultimo errore (spero) mi da

Codice: Seleziona tutto

Exception in thread "main" java.lang.NullPointerException
	at M.main(M.java:21)
Java Result: 1
credo sia a causa di o[], così ho provato a fare una for per inizializzarli ma poi non mi prende più il valore del file ma quello dell'oggetto creato :(
Avatar utente
racerider
Prode Principiante
Messaggi: 64
Iscrizione: sabato 14 maggio 2011, 13:28
Desktop: Gnome 3
Distribuzione: Ubuntu 14.04.1 LTS x64
Località: Perugia

Re: [JAVA]File serializzato

Messaggio da racerider »

Risolto, colpa dello static che mi ero scordato ^^
Grazie mille :)
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti