Java ObjectInputStream (сервер \ клиент)
Поток сервера
package schatserver;
public ServerThread(Socket socket) {
this.socket = socket;
this.start();
}
public void run() {
try {
ObjectInputStream inputStream = new ObjectInputStream(this.socket.getInputStream());
ObjectOutputStream outputStream = new ObjectOutputStream(this.socket.getOutputStream());
container = (Message) inputStream.readObject();
.....
..... etc
и "Класс сообщения" содержит как на стороне сервера, так и на стороне клиента
public class Message implements Serializable {
private String login;
private String message;
private String[] users;
private Date time;
public Message(String login, String message){ //for client
this.login = login;
this.message = message;
this.time = java.util.Calendar.getInstance().getTime();
}
public Message(String login, String message, String[] users){//for server
this.login = login;
this.message = message;
this.time = java.util.Calendar.getInstance().getTime();
this.users = users;
}
Попытка отправки объекта "Сообщение"
private static Message message;
public void Connect() {
try {
sock = new Socket(ClientConfig.HOST, ClientConfig.PORT);
System.out.println("Connected with: " + ClientConfig.HOST);
ObjectOutputStream out = new ObjectOutputStream(sock.getOutputStream());
out.writeObject(message);
out.flush();
получение "java.lang.ClassNotFoundException: socketchatclient.Message" в этой строке
container = (Message) inputStream.readObject();
Может ли кто-нибудь объяснить мне, как я должен отправить объект сообщения?
socketchatclient. - это клиентский пакет
1 ответ
java.lang.ClassNotFoundException: socketchatclient.Message
Это означает, что вы пытаетесь десериализовать класс, которого у вас нет. Скорее всего, код на вашем клиенте отличается от кода на сервере, и клиент сериализовал свой класс, но если сервер не имеет этот класс в том же пакете, он не может десериализовать его.
Я предлагаю вам иметь общий модуль для сериализуемых объектов и общий ресурс клиента и сервера, чтобы гарантировать, что одни и те же классы доступны на обоих концах.