1

Ich versuche, ein Objekt durch Sockets zu senden, aber wenn ich das Objekt im Client lesen möchte, habe ich java.lang.ClassCastException.ClassCastException mit ObjectInputStream in Server-Client-Anwendung

Mein Objekt ist das Folgende und ich habe es in beiden Projekten (Server und Client).

class Data implements Serializable{ 

    int height; 
    int width; 
    int max; 
    int zoom; 
    int start; 
    int end; 
    int xMove; 
    int yMove; 

    public Data(int height, int width, int max, int zoom, int start, int end, int xMove, int yMove){ 
     this.height = height; 
     this.width = width; 
     this.max = max; 
     this.zoom = zoom; 
     this.start = start; 
     this.end = end; 
     this.xMove = xMove; 
     this.yMove = yMove; 
    } 
} 

Der Sendeteil:

try{ 
    Data dataToSend = new Data(height, width, max, zoom, start, end, xMove, yMove); 
    out.writeObject(dataToSend); 
} 

Der Empfängerteil:

try{ 
    InputStream is = socket.getInputStream(); 
    Data dataToRead = (Data)ois.readObject(); 
} 

und die Fehlermeldung:

java.lang.ClassCastException: lab05_server.Data cannot be cast to lab05_kliens.Data 

Ich habe versucht, alles mit dem gleichen Ergebnis. Ich kann meinen Fehler nicht finden.

Vielen Dank für jede Hilfe.

Antwort

0

Sie müssen die gleiche SerializableID hinzugefügt beiden Datenklassen haben, werfen Sie einen Blick auf: this

+0

ich dies in beiden Dateien erklärt: private static final lange serialVersionUID = 1L; und jetzt habe ich den folgenden Fehler: Error0: java.io.InvalidClassException: lab05_server.Data; lokale Klasse inkompatibel: stream classdesc serialVersionUID = 1, lokale Klasse serialVersionUID = -5600343588571323555 –

+0

Eine Klasse ist korrekt, da sie die ID als das anzeigt, was Sie deklariert haben: "1", die andere nimmt immer noch die Standard-ID: "-5600343588571323555 " – crumbug

+0

Yepp, ich habe den Fehler gefunden, im Client im (Datas) ois.readObject(); Teil der Konstruktor der Daten wird nicht ausgeführt (ich habe dort einen Test ouptup). Wie kann ich das Casting zum Laufen bringen? Vielen Dank. –