Serialized LinkedList aus Datei Laden

scaary

Bekanntes Mitglied
Hiho,

Also ich hab mich jetzt schon durch google gewuehlt, und auch hier im Forum noch nix gefunden, daher jetzt mein Problem:

Ich habe eine LinkedList<Personendaten> serializiert in einer Datei gespeichert.
Soweit so gut, jetzt will ich das ding wieder laden:

Java:
	/**
	 * Read LinkedList Object from file.
         * @return LinkedList<Personendaten>
	 */
	public static LinkedList<Personendaten> loadObjectfromFile(File fileName) {
		InputStream fis = null;
                LinkedList<Personendaten> result = null;
		try {
			fis = new FileInputStream( fileName );
			ObjectInputStream o = new ObjectInputStream( fis );
			result = (LinkedList<Personendaten>) o.readObject();
		}catch ( IOException e ) { System.err.println( "Help" );
                }catch ( ClassNotFoundException e ) { System.err.println( e );
                }finally {
                    try { fis.close();
                    } catch ( Exception e ) { } 
	}
	return result;
        }


Folgenden Fehler bekomme ich:

Code:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.util.LinkedList
        at GSTSharedProjectFiles.FileWorking.FileWorker.loadObjectfromFile(FileWorker.java:352)

Wo genau hab ich denn meinen Fehler?

Danke :)

LG Scaary
 

scaary

Bekanntes Mitglied
okidoki, hier die schreibmethode:

Java:
        /**
         *
         * Writes one Object in a File.
         * @param fileName
         * @param nameList
         */
         public static void writeSingleObjectInFile(File fileName, Object object) {
             OutputStream fos = null;

             try {
                  fos = new FileOutputStream(fileName );
                  ObjectOutputStream o = new ObjectOutputStream( fos );
                  o.writeObject(object);

                } catch ( IOException e ) {
                    System.err.println( e );
                } finally {
                    try {
                        fos.close();
                    } catch ( Exception e ) {
                    }
                }
         }
 

eRaaaa

Top Contributor
Und du bist dir sicher, dass du der Methode [c]writeSingleObjectInFile[/c] eine LinkedList<Personendaten> übergibst und nicht einen String?/edit: bzw String-Array?
Zeige mal den Aufruf ^^
 
Zuletzt bearbeitet:
S

SlaterB

Gast
was bringt schon der Aufruf, die Datei könnte von wer weiß wo her kommen,
das einzige was zählt ist ein vollständiges Programm:

main
File erstellen
ObjectOutputStream darauf
ObjectInputStream darauf
Ende
 

scaary

Bekanntes Mitglied
ARRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRG, och Nein.


Es tutu mir aufrichtig leid euch belaestigt zu haben, es lag mal wieder an meinerunkonzentriertheit.... .

Er kann die Linkedlist ned laden... weil da nen String array drin ist... :p

Ich DEPP.

Entschuldigt, und vielen Dank euch allen!
 

scaary

Bekanntes Mitglied
Hiho,

ich habe leider schon wieder ein Problem mit der Methode... :(
Java:
/**
	 * Read LinkedList Object from file.
         * @return LinkedList<String>
	 */
	public static Object loadObjectfromFile(File fileName) {
		 InputStream fis = null;
        Object result = null;
        
        try {
            fis = new FileInputStream(fileName);
        ObjectInputStream o = new ObjectInputStream(fis);
        result = o.readObject();
		}catch ( IOException e ) { System.err.println( "IO Exception in loadObjectfromFile" );
                }catch ( ClassNotFoundException e ) { System.err.println( "Class not found excepton in LoadObjectFromFile" );
                }finally {
                    try { fis.close();
                    } catch ( Exception e ) { } 
            }
	return result;
        }

Welche ich wie folgt aufrufe:
Java:
    public static void main (String[] args) {
        File file = new File ("Altenpfleger.txt" );
        System.out.println(loadObjectfromFile(file));

    }

und von welcher ich folgenden Fehler erhalte:

Code:
run:
IO Exception in loadObjectfromFile
null
BUILD SUCCESSFUL (total time: 1 second)


Ich habe eine Testdatei angehaengt.

Koennt ihr die Ohne Probleme oeffnen?

Danke :)

LG Scaary
 
S

SlaterB

Gast
die Exception ausgeben (e.printStackTrace() ) willst du nicht, obwohl das einfachste Fehler wie falschen Pfad anzeigen würde?

-----

bisher fehlt ein Anhang,
von meinem 'vollständiges Programm'-Ansatz, im anderen Thema gar komplett vorgesetzt
http://www.java-forum.org/java-basi...jectinputstream-beim-einlesen-linkedlist.html
hälst du immer noch nix?
an einer bestimmten Datei kann alles mögliche schief sein, vielleicht hast du im Editor ein Byte umgesetzt, bringt doch nix
 

scaary

Bekanntes Mitglied
Das..uuuehm... war absicht...
uueehmm..
:p

(ich depp)

Also, hier die richtige Fehlermeldung:

Code:
run:
java.io.InvalidClassException: GSTSharedProjectFiles.ApplicationData.Personendaten; local class incompatible: stream classdesc serialVersionUID = 2041391104374300978, local class serialVersionUID = 3580439621773860946
        at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:562)
        at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1583)
        at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
        at java.util.LinkedList.readObject(LinkedList.java:964)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
null
        at GSTSharedProjectFiles.FileWorking.FileWorker.loadObjectfromFile(FileWorker.java:372)
        at GSTSharedProjectFiles.FileWorking.FileWorker.main(FileWorker.java:37)
BUILD SUCCESSFUL (total time: 0 seconds)


Uhm, um ehrlich zu sein, nein ,den ganzen Code moechte ich nicht hochladen.

Hierbei handelt es sich naemlich um ein Geflecht aus mitlerweile 3 verschiedenen Geschriebenen Programmen die ca. 50 Klassen umfassen, und ausserdem Serverdaten von dem Firmenserver enthalten (die ich, verstaendlicherweise, nicht sooo ger weitergeben moechte ;) ).
 

Anhänge

  • Altenpfleger.txt
    262 Bytes · Aufrufe: 2
Zuletzt bearbeitet:

eRaaaa

Top Contributor
"Bei der Serialisierung wird in Java nicht nur der Objektinhalt geschrieben, sondern zusätzlich eine eindeutige Kennung der Klasse, die UID. Die UID ist ein Hashcode aus Namen, Attributen, Parametern, Sichtbarkeit und so weiter. Sie wird als long wie ein Attribut gespeichert. Ändert sich der Aufbau einer Klasse, ändert sich der Hashcode und damit die UID. Klassen mit unterschiedlicher UID sind nicht kompatibel. Erkennt der Lesemechanismus in einem Datenstrom eine UID, die nicht zur Klasse passt, wird eine InvalidClassException ausgelöst. Das bedeutet, dass schon ein einfaches Hinzufügen von Attributen zu einem Fehler führt."

--> Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 14.12 Persistente Objekte und Serialisierung
 
S

SlaterB

Gast
wie sollte irgendjemand anders eine Datei einer unbekannten Klasse öffnen? ;)

die Fehlermeldung besagt, dass du unterschiedliche .class-Dateien beim Schreiben und Lesen benutzt,
richtig ein Problem wäre, wenn die Klasse zwischendurch verändert wird, der Fehler kann aber schon bei reinem Neukompilieren auftreten
(edit: letzteres widerspricht anscheinend der Definition, will ich nicht beschwören, war aber bisher mein Eindruck),

helfen könnte eine manuell angegebene serialVersionUID
serialVersionUID - was bringt es?
 
S

SlaterB

Gast
bezogen auf das geplante, aber nicht durchgeführte

> Ich habe eine Testdatei angehaengt.
>
> Koennt ihr die Ohne Probleme oeffnen?

wobei, 18.41 doch dran ;)
die Datei kann man ohne die Klasse doch sicher nicht sinnvoll lesen
 

scaary

Bekanntes Mitglied
AHhh, klaaaar, gedankenfehler meinerseits, du hast natuerlich vollkommen recht!

:)

Eine letzte frage hab ich noch:

Wie teste ich beim objectInputStream (respektive fileInputStream) ob die datei zuende ist?

Derzeit wirft er mir immer eine EOF Exception.

Danke :)
 
S

SlaterB

Gast
anders gehts nicht soweit mir bekannt,
idealerweise weiß man vorher was drinsteht oder wieviele Objekte,
man kann ja immer leicht alle Objekte in eine Liste oder sonst ein höheres Objekt stecken und nur dieses EINE Objekt schreiben (und wieder lesen),
dann hat man alle anderen Java-mäßig mit get(), size() usw.
 

scaary

Bekanntes Mitglied
*gg*, dann ahette ich eine List mite Listen von Listen von Dateien.

Uhm, nein, das wird mir irgendwann zu viel :)

Wenn ich mir das in nem Jahr wieder angucken muss, kapier ich das mit der besten Doku nicht..... .:)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Textfile vs Serialized Objects Java Basics - Anfänger-Themen 4
A LinkedList implementieren Java Basics - Anfänger-Themen 32
M Wie kann ich den Index i von einer LinkedList überprüfen? Java Basics - Anfänger-Themen 36
Düsseldorf2002 Datentypen Verschachtelte LinkedList Java Basics - Anfänger-Themen 5
Düsseldorf2002 Datentypen Zwei dimensionale LinkedList Java Basics - Anfänger-Themen 8
B Warteschlange erstellen mit LinkedList ? Java Basics - Anfänger-Themen 6
U Objekte in LinkedList löschen und editieren Java Basics - Anfänger-Themen 14
G Java LinkedList remove Methode Java Basics - Anfänger-Themen 5
G Java LinkedList Java Basics - Anfänger-Themen 6
U Objekte in einer LinkedList sortieren Java Basics - Anfänger-Themen 5
S Eigene LinkedList Klasse Java Basics - Anfänger-Themen 4
S Mit einer LinkedList vorwärts und rückwärts iterieren Java Basics - Anfänger-Themen 6
S Endlosschleife beim Ausgeben einer LinkedList Java Basics - Anfänger-Themen 2
G Java LinkedList Java Basics - Anfänger-Themen 3
B LinkedList add-Methode Java Basics - Anfänger-Themen 10
F Windows in LinkedList registrieren Java Basics - Anfänger-Themen 3
A Hilfe, LinkedList Java Basics - Anfänger-Themen 2
H Knoten-Reihenfolge einer LinkedList invertieren Java Basics - Anfänger-Themen 11
H linkedlist generische klassen Java Basics - Anfänger-Themen 169
O Hashmap, ArrayList, LinkedList Java Basics - Anfänger-Themen 7
P Quellcode LinkedList Java Basics - Anfänger-Themen 2
F Collection Aufgabe mit LinkedList Java Basics - Anfänger-Themen 3
N Hilfe bei verknüpfter Liste - Linkedlist Java Basics - Anfänger-Themen 11
P Datentypen LinkedList: Kopie behält Referenz? Java Basics - Anfänger-Themen 3
C ArrayList vs LinkedList vs ? Java Basics - Anfänger-Themen 15
C LinkedList vs. ArrayList Java Basics - Anfänger-Themen 15
O LinkedList zu ArrayList Java Basics - Anfänger-Themen 4
M LinkedList elemente löschen Java Basics - Anfänger-Themen 2
L Problem mit LinkedList Java Basics - Anfänger-Themen 3
F In LinkedList einen Wert ersetzen oder neu einfügen Java Basics - Anfänger-Themen 7
P Hashmap anstatt LinkedList? Java Basics - Anfänger-Themen 6
TechGirl LinkedList - kurze allgemeine Frage Java Basics - Anfänger-Themen 17
B generische LinkedList nach Häufigkeit der Elemente füllen Java Basics - Anfänger-Themen 6
L LinkedList Comparable < > MEHRFACH implementieren? Java Basics - Anfänger-Themen 3
S LinkedList mit Input vergleichen. Java Basics - Anfänger-Themen 5
C Bei der LinkedList auf Palindrom überprüfen Java Basics - Anfänger-Themen 4
F Element aus LinkedList löschen Java Basics - Anfänger-Themen 3
A LinkedList: Probleme beim Auslesen Java Basics - Anfänger-Themen 2
T Collections LinkedList<LinkedList<T>> - Implementierung Java Basics - Anfänger-Themen 10
S Jfreechart mit LinkedList befüllen Java Basics - Anfänger-Themen 1
S JTable LinkedList <Objekt> befüllen Java Basics - Anfänger-Themen 1
K LinkedList aus Arrays ( Lösungsraum Mastermind ) Java Basics - Anfänger-Themen 5
Z Compiler-Fehler LinkedList Fragen Java Basics - Anfänger-Themen 4
K Methoden Probleme mit LinkedList.remove(object) Java Basics - Anfänger-Themen 1
Farbenfroh int in LinkedList einsortieren Java Basics - Anfänger-Themen 4
W Klassen LinkedList funktioniert nicht Java Basics - Anfänger-Themen 6
X LinkedList - Index eines Objekts Java Basics - Anfänger-Themen 2
S Strings in eine LinkedList schreiben und auslesen? Java Basics - Anfänger-Themen 4
D Sortieren von int Werten von Objekten in einer LinkedList, kann nicht auf int Werte zugreifen Java Basics - Anfänger-Themen 3
F Eigene LinkedList - toString Java Basics - Anfänger-Themen 10
T Datentypen gleichmäßiges mischen von 2 LinkedList Java Basics - Anfänger-Themen 3
S Dateien/LinkedList/StringBuffer - SOrtierung klappt nicht so ganz Java Basics - Anfänger-Themen 2
J Datentypen Array von einer LinkedList Java Basics - Anfänger-Themen 5
R LinkedList Java Basics - Anfänger-Themen 8
J Per I/O Streams in LinkedList oder ArrayList schreiben/lesen Java Basics - Anfänger-Themen 6
B LinkedList remove Java Basics - Anfänger-Themen 5
J statische Methoden auf eine LinkedList initialisieren? Java Basics - Anfänger-Themen 5
G Hausaufgabe mit LinkedList und LinkedListStack verstehen Java Basics - Anfänger-Themen 6
N LinkedList-checkForComodification Java Basics - Anfänger-Themen 11
N LinkedList Java Basics - Anfänger-Themen 17
P LinkedList sortieren Java Basics - Anfänger-Themen 20
P LinkedList - Stack ... grundlegende Frage Java Basics - Anfänger-Themen 5
Z Erste Schritte LinkedList Werte abfragen und vergleichen Java Basics - Anfänger-Themen 3
B SUCHE: Threadsafe LinkedList Java Basics - Anfänger-Themen 10
Binary.Coder Wie linkedlist für Djikstra nutzen? Java Basics - Anfänger-Themen 6
M Arrays in LinkedList Java Basics - Anfänger-Themen 4
R Collections Probleme mit contains()-Methode [LinkedList] Java Basics - Anfänger-Themen 5
G Collections.binarySearch(LinkedList): cannot find method Java Basics - Anfänger-Themen 6
M LinkedList aktuelle position Java Basics - Anfänger-Themen 3
G Frage zu LinkedList Java Basics - Anfänger-Themen 15
H Dynamische Bindung mit Interfaces und LinkedList Java Basics - Anfänger-Themen 7
I LinkedLIst / ArrayList Konstruktor Java Basics - Anfänger-Themen 4
B Collections RandomAccessfile & Linkedlist Java Basics - Anfänger-Themen 4
S Speichermangel ArrayList/LinkedList Java Basics - Anfänger-Themen 3
V LinkedList size() Java Basics - Anfänger-Themen 2
darekkay Datentypen HashSet bzw. LinkedList mit Werten initialisieren Java Basics - Anfänger-Themen 3
D Probleme mit LinkedList Java Basics - Anfänger-Themen 6
L LinkedList vorgänger Knoten zurück geben Java Basics - Anfänger-Themen 4
S LinkedList indexOf() - geht des irgendwie schneller? Java Basics - Anfänger-Themen 23
S LinkedList<String[]> filtern und sortieren Java Basics - Anfänger-Themen 9
W LinkedList Java Basics - Anfänger-Themen 12
S Frage zum speichern der Daten in einer LinkedList Java Basics - Anfänger-Themen 2
D Fenster in LinkedList verwalten Java Basics - Anfänger-Themen 2
C HashMap mit LinkedList Java Basics - Anfänger-Themen 5
S Datentypen LinkedList Konstruktor, add Alternative Java Basics - Anfänger-Themen 2
truesoul LinkedList Problem Java Basics - Anfänger-Themen 6
M Java Generics LinkedList Java Basics - Anfänger-Themen 5
H LinkedList Element an Stelle x ausgeben? Java Basics - Anfänger-Themen 5
D LinkedList aufrufe Java Basics - Anfänger-Themen 3
S Problem mit ObjectInputStream beim Einlesen von LinkedList Java Basics - Anfänger-Themen 3
S LinkedList Java Basics - Anfänger-Themen 2
M LinkedList in anderer Klasse nutzen Java Basics - Anfänger-Themen 4
L LinkedList sortieren Java Basics - Anfänger-Themen 5
L heap space, LinkedList umspeichern Java Basics - Anfänger-Themen 15
H LinkedList mit Strings Exception Java Basics - Anfänger-Themen 3
S IndexOutofBoundsException bei linkedlist Java Basics - Anfänger-Themen 5
B Fehlersuche bei LinkedList Java Basics - Anfänger-Themen 3
B LinkedList - Berechnung des Produkts Java Basics - Anfänger-Themen 6
S Sortierte LinkedList nach Variablen durchsuchen und nicht nach INDEX Java Basics - Anfänger-Themen 6
B Unterschied ArrayList und LinkedList Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben