Я пытаюсь отправить объект через сокеты, но когда я хочу прочитать объект на клиенте, я получил java.lang.ClassCastException.ClassCastException с использованием ObjectInputStream в сервер-клиентском приложении
Моя цель следующая, и у меня она есть в обоих проектах (сервер и клиент).
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;
}
}
Передающая часть:
try{
Data dataToSend = new Data(height, width, max, zoom, start, end, xMove, yMove);
out.writeObject(dataToSend);
}
Ресивер часть:
try{
InputStream is = socket.getInputStream();
Data dataToRead = (Data)ois.readObject();
}
И сообщение об ошибке:
java.lang.ClassCastException: lab05_server.Data cannot be cast to lab05_kliens.Data
Я попробовал все с тем же результатом. Я не могу найти свою ошибку.
Благодарим за помощь.
Я объявленную это в обоих файлах: частный статический окончательный долго serialVersionUID = 1L; и теперь я получил следующую ошибку: Error0: java.io.InvalidClassException: lab05_server.Data; локальный класс несовместим: stream classdesc serialVersionUID = 1, локальный класс serialVersionUID = -5600343588571323555 –
Один класс верен, так как он показывает идентификатор как то, что вы его объявили: «1», другой все еще набирает идентификатор по умолчанию: «-5600343588571323555 " – crumbug
Yepp, я нашел ошибку, в клиенте в (Datas) ois.readObject(); часть конструктора Data не выполняется (я установил там тестовый вывод). Как заставить кастинг работать? Спасибо. –