Objekt deserialisierung schlägt fehl...

Riedelinho

Mitglied
Hallo meine Frage ist folgende:
Wie folgt wird mein Objekt erfolgreich gespeichert.

Java:
public void speichern(PlanModel planmodel, String filename) throws Exception {
        String speicherpfad = "Save/" + filename;
        File file = new File(speicherpfad);
        FileOutputStream fos = new FileOutputStream(file);
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeObject(planmodel);
        oos.close();
        System.out.println("Speichern erfolgreich unter: " + speicherpfad);
    }

Wenn ich das Objekt allerdings deserialisieren will kommt bei mir folgender Fehler:

Java:
java.io.InvalidClassException: data.strassenTypen.DefaultStrassenModel; data.strassenTypen.DefaultStrassenModel; no valid constructor
    at java.io.ObjectStreamClass.checkDeserialize(Unknown Source)
    at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
    at java.io.ObjectInputStream.readObject0(Unknown Source)
    at java.io.ObjectInputStream.readArray(Unknown Source)
    at java.io.ObjectInputStream.readObject0(Unknown Source)
    at java.io.ObjectInputStream.readArray(Unknown Source)
    at java.io.ObjectInputStream.readObject0(Unknown Source)
    at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
    at java.io.ObjectInputStream.readSerialData(Unknown Source)
    at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
    at java.io.ObjectInputStream.readObject0(Unknown Source)
    at java.io.ObjectInputStream.readObject(Unknown Source)
    at controller.ProgrammController.laden(ProgrammController.java:49)
    at view.dialog.LadenDialog$1.mouseClicked(LadenDialog.java:39)
    at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

das DefaultStrassenModel wird wohl bei der serialisierung mit serialisiert (enthält auch das interface dazu). Die Deserialisierung schlägt allerdings fehl...kann mir jmd vll auf die Sprünge helfen?
beim deserialisieren des
 
Zuletzt bearbeitet:
During deserialization, the fields of non-serializable classes will be initialized using the public or protected no-arg constructor of the class. A no-arg constructor must be accessible to the subclass that is serializable. The fields of serializable subclasses will be restored from the stream.

aus der javadoc zum serializeable interface

denke also das die klasse lediglich einen null argumente public constructor braucht
 
Die serialisierbare Klasse selbst braucht so einen Konstruktor nicht unbedingt. Wenn sie aber von einer ncihtserialisierbaren Basisklasse abgeleitet ist, dann muss diese Basisklasse einen parameterlosen Konstruktor haben.
 

Zurück
Oben