Avatar billede cecilieb Nybegynder
11. december 2002 - 09:30 Der er 21 kommentarer

Serialize

Vi er to nybegyndere, der ikke rigtig kan finde ud af hvorfor programmet kommer med denne fejlmelding:
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: ForaListe

når vi compiler, hvad har vi dog gjort galt. Vi har vedlagt så meget af vores kode som vi mente nødvendigt. Håber der er nogen, der har et svar.


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

    public static void main(String[] args) throws IOException, ClassNotFoundException{
    Controller controller = new Controller() ;
        SerializedForaListeFil filen = new SerializedForaListeFil("Foraliste objekt");
        ForaListe foraListe;
       
       
    /* get old objects from file */
    foraListe = filen.getForaListe();
/* if no file found, create objects from scratch */
    if (foraListe == null) foraListe = new ForaListe();
       
       
    /* put objects back into file */
    filen.putForaListe(foraListe);
       
    System.exit(0);
    }
}

------------------------------------------
import java.io.*;

public class SerializedForaListeFil extends SerializedObjectFile {

    public SerializedForaListeFil(String filNavn) {
        super(filNavn);
    }

public void putForaListe(ForaListe foraListe) throws IOException {
    putObjec(foraListe);         
    }
    public ForaListe getForaListe() throws IOException, ClassNotFoundException {
        return (ForaListe) getObject();
    }
}


-----------------------------------
import java.io.*;
public class SerializedObjectFile implements Serializable {

    final protected String filNavn;

    public SerializedObjectFile(String filNavn) {
        this.filNavn = filNavn;
    }
protected void putObject(ForaListe foraListe) throws IOException {
        /* De f?lgende syv linjer er afskrift
        *  fra Figure 13.23, The Object of Java, side 507 - 508
        */
        FileOutputStream outStream;
        ObjectOutputStream objStream;
        outStream = new FileOutputStream(filNavn);
        objStream = new ObjectOutputStream(outStream);
        objStream.writeObject(foraListe);
        objStream.flush();
        objStream.close();
    }
protected Object getObject() throws IOException, ClassNotFoundException {
        try {
            /* De f?lgende syv linjer er afskrift
            *  fra Figure 13.24, The Object of Java, side 509
            */
            Object foraListe;
            FileInputStream inStream;
            ObjectInputStream objStream;
            inStream = new FileInputStream(filNavn);
            objStream = new ObjectInputStream(inStream);
            foraListe = objStream.readObject();
            objStream.close();
            return foraListe;
        }
        catch (FileNotFoundException e) {
            return null;
        }
    }
}
---------------------------------
import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.awt.event.*;
import java.io.*;

public class ForaListe implements Serializable{
    private Vector foraListe1;
    private Iterator i;
    private Forum f;
   
    public ForaListe( Vector foraListe1){
        this.foraListe1 = foraListe1;
        }
    public ForaListe() {
        foraListe1 = new Vector();
        }
    public Vector getForaListen() {
            return foraListe1;    }
}
Avatar billede arne_v Ekspert
11. december 2002 - 09:38 #1
Den brokker sig over at ForaListe ikke er serializable.
Avatar billede arne_v Ekspert
11. december 2002 - 09:40 #2
Vector er serializable, men Iterator er ikke og jeg
kan ikke se om Forum er det.

Alle variable I et serializable objekt skal enten
være serializable eller transient.
Avatar billede kennie_nm Nybegynder
11. december 2002 - 09:40 #3
har I implementeret alle metoder i Serializable interfacet?
Avatar billede arne_v Ekspert
11. december 2002 - 09:44 #4
kennie> Serializable har ingen metoder !
Avatar billede carstenknudsen Nybegynder
11. december 2002 - 09:46 #5
kennie_nm: Serializable er et marker interface
og kræver derfor ikke at man implementerer nogle
metoder.
Avatar billede cecilieb Nybegynder
11. december 2002 - 10:01 #6
Vi har udkommenteret Iteratoren, og Forum er Serializable, men det laver stadig den samme fejl.
Hvordan kan vi være sikre på at alle variable er serializable?
Avatar billede arne_v Ekspert
11. december 2002 - 10:04 #7
Præcis samme fejl ?

Og er alle variable i Forum serializable ?
Avatar billede kennie_nm Nybegynder
11. december 2002 - 10:08 #8
arne, carsten > hmmm, der røg mine chancer for nogensinde at få et job med udvikling i Java... :)
Avatar billede arne_v Ekspert
11. december 2002 - 10:12 #9
kennie> tværtimod - du har lært noget idag - det øger dine
chancer for at få job med udvikling i java !
Avatar billede cecilieb Nybegynder
11. december 2002 - 10:19 #10
Jeps samme fejl...

Vi har serialized alle klasser nu - selv Gui klassen, der ellers kun går gennem Controller klassen.
Og vi har tjekket, at alle attributter vi har i klasserne implementerer serialized interfacet...
Avatar billede di8leva Nybegynder
11. december 2002 - 10:20 #11
hvis du bruger:
public class SerializedForaListeFil extends SerializedObjectFile
og:
public class SerializedObjectFile implements Serializable

betyder det IKKE at SerializedForaListeFil er Serializable.

ibland er java ikke godt till at ærva Serializable.

prøv med
Avatar billede di8leva Nybegynder
11. december 2002 - 10:21 #12
prøv med:
-------------------
public class SerializedForaListeFil extends SerializedObjectFile implements Serializable
-------------------

og se hvad som hænder...
Avatar billede arne_v Ekspert
11. december 2002 - 10:23 #13
Lyder mystisk. I bruger ikke nogle container
klasser som ganske vsit selv er serializable, men hvor
indholdet ikke er det ?
Avatar billede arne_v Ekspert
11. december 2002 - 10:24 #14
di8leva> dokumentationen siger:
  "All subtypes of a serializable class are themselves serializable."
Avatar billede di8leva Nybegynder
11. december 2002 - 10:30 #15
arne_v > I know.

men det virkede kun før mig nær jag også gjorde sub-typerna Serializable
hvis ikke fick jag NotSerializableException..

jag tyckte det var meget mystiskt =)
Avatar billede arne_v Ekspert
11. december 2002 - 10:36 #16
Der er ihvertfald noget mystisk ved dette problem !
Avatar billede carstenknudsen Nybegynder
11. december 2002 - 10:52 #17
Kan I ikke poste den kode I har nu med
alle klasser og input filer, så kan vi
prøve at køre det hos os. Eller er der
for mange klasser?
Avatar billede cecilieb Nybegynder
11. december 2002 - 12:08 #18
Vi har lagt den ud på http://imv.au.dk/~cecilieb i den mappe der hedder: wildlife.

Tak den foreløbige hjælp, men det har ikke virket endnu desværre.
Avatar billede arne_v Ekspert
11. december 2002 - 16:43 #19
Jeg læste noget i.f.m. at jeg svarede på et andet
spørgsmål (også om serialisering).

Kunne I prøve at tilføje en constructor uden argumenter
til alle de klasser der faktisk skal serialiseres:
Forum, Bruger, Koncepter (ForaListe har allerede).
Avatar billede joanzenia Nybegynder
12. december 2002 - 09:05 #20
Hej
Vi har tilføjet en constructor uden argumenter til de serialiserede klasser, men fejlen er stadig den samme...
Vi kan se, at den laver en foraListe, men fejlen ændrer sig ikke...
Desværre

Cecilie og Joan
Avatar billede joanzenia Nybegynder
12. december 2002 - 09:23 #21
fejlen lyder;
java.io.WriteAbortedException: Writing aborted: java.io.NotSerializableException: ForaListe

/Joan
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester