Hallo,
ich habe folgende Struktur:
eine Klasse SFMatch welche zwei Objekte vom Typ SFTeam beinhaltet.
Jedes SFTeam wiederum beinhaltet eine ArrayList<SFPlayer> .
SFMatch, SFTeam sowie SFPlayer haben das Interface Serializable implementiert.
die serialVersionUID ist auch jeweils vergeben.
Wenn ich nun mit folgenden Methoden ein SFMatch Objekt in einen String speichere und wieder auslese bekomme ich folgenden Fehler:
Die Methoden:
Der Fehler:
java.io.InvalidClassException: java.util.ArrayList; local class incompatible: stream classdesc serialVersionUID = 8664875232659988799, local class serialVersionUID = 8683452581122892189
at java.i
bjectStreamClass.initNonProxy(ObjectStreamClass.java:562)
at java.i
bjectInputStream.readNonProxyDesc(ObjectInputStream.java:1583)
at java.i
bjectInputStream.readClassDesc(ObjectInputStream.java:1496)
at java.i
bjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
at java.i
bjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.i
bjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
at java.i
bjectInputStream.readSerialData(ObjectInputStream.java:1869)
at java.i
bjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
at java.i
bjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.i
bjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
at java.i
bjectInputStream.readSerialData(ObjectInputStream.java:1869)
at java.i
bjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
at java.i
bjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.i
bjectInputStream.readObject(ObjectInputStream.java:351)
at sfgame.data.SFMatch.setSerializedMatch(SFMatch.java:37)
at sfgame.SFCalc.main(SFCalc.java:26)
ich mache das Ganze in NetBeans , compiliere, führe aus, serialisiere, und deserialisiere den String direkt wieder.
Wenn ich die ArrayList weglasse geht es ohne Probleme, die Spieler sind dann halt nicht dabei.
Wenn ich nur ArrayList deklariere ohne SFPlayer kommt der gleiche Fehler.
Kann mir jemand sagen was ich da falsch mache?
ich habe folgende Struktur:
eine Klasse SFMatch welche zwei Objekte vom Typ SFTeam beinhaltet.
Jedes SFTeam wiederum beinhaltet eine ArrayList<SFPlayer> .
SFMatch, SFTeam sowie SFPlayer haben das Interface Serializable implementiert.
die serialVersionUID ist auch jeweils vergeben.
Wenn ich nun mit folgenden Methoden ein SFMatch Objekt in einen String speichere und wieder auslese bekomme ich folgenden Fehler:
Die Methoden:
Code:
public static String getSerializedMatch(SFMatch match)throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream objOut = new ObjectOutputStream(baos);
objOut.writeObject(match);
objOut.close();
return baos.toString();
}
public static SFMatch setSerializedMatch(String match)throws IOException, ClassNotFoundException {
ByteArrayInputStream bais = new ByteArrayInputStream(match.getBytes());
ObjectInputStream objIn = new ObjectInputStream(bais);
return (SFMatch)objIn.readObject();
}
Der Fehler:
java.io.InvalidClassException: java.util.ArrayList; local class incompatible: stream classdesc serialVersionUID = 8664875232659988799, local class serialVersionUID = 8683452581122892189
at java.i
at java.i
at java.i
at java.i
at java.i
at java.i
at java.i
at java.i
at java.i
at java.i
at java.i
at java.i
at java.i
at java.i
at sfgame.data.SFMatch.setSerializedMatch(SFMatch.java:37)
at sfgame.SFCalc.main(SFCalc.java:26)
ich mache das Ganze in NetBeans , compiliere, führe aus, serialisiere, und deserialisiere den String direkt wieder.
Wenn ich die ArrayList weglasse geht es ohne Probleme, die Spieler sind dann halt nicht dabei.
Wenn ich nur ArrayList deklariere ohne SFPlayer kommt der gleiche Fehler.
Kann mir jemand sagen was ich da falsch mache?