如何通过java套接字(java网络)发送对象并读取它

如何通过java套接字(java网络)发送对象并读取它,java,sockets,inputstream,classnotfoundexception,outputstream,Java,Sockets,Inputstream,Classnotfoundexception,Outputstream,我想使用java网络制作聊天应用程序。到目前为止,我已经在两个不同的项目中创建了server和client类,每个项目都有相同的消息类: package client; import java.io.Serializable; public class Message implements Serializable { public static final long serialVersionUID = 1l; private String text; private int rece

我想使用java网络制作聊天应用程序。到目前为止,我已经在两个不同的项目中创建了server和client类,每个项目都有相同的消息类:

package client;

import java.io.Serializable;

public class Message implements Serializable {

public static final long serialVersionUID = 1l;

private String text;
private int receiversID;
private int senderID;

public Message(String text, int receiversID, int senderID){
    this.text = text;
    this.receiversID = receiversID;
    this.senderID = senderID;
}

public String getText() {
    return text;
}

public int getReceiversID() {
    return receiversID;
}

public int getSenderID() {
    return senderID;
}
然后我在客户端类中发送一条消息,如下所示:

            do {
            System.out.print("Enter message to be sent: ");
            text = scanner.nextLine();
            System.out.print("Enter receivers ID: ");
            receiverID = scanner.nextInt();

            outputStream.writeObject(new Message(text, receiverID, ID)); // sending message
            outputStream.flush();

            if (!text.equals("exit")) {
                try {
                    Message message = (Message) inputStream.readObject();
                    System.out.print(message.getText() + "\n");
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                }

            }
        } while (!text.equals("exit"));
当我想在服务器项目中获取该消息时,会发生错误:

        Message message = (Message) inputStream.readObject();
我明白了:

java.lang.ClassNotFoundException: client.Message
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:683)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1863)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1746)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2037)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1568)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:428)
at network.ClientSockets.run(ClientSockets.java:57)
我知道server project无法识别来自客户端的消息类,尽管它们是相同的类,但我真的不知道如何解决这个问题


有人知道这个解决方案吗?

network.Client.run(Client.java:55)的错误是
。错误是在服务器上还是在客户机上?它只是一个名称,不是来自另一个项目的客户机类,该类在服务器项目中包含客户机的套接字。您可以发布客户机的第55行(或者更确切地说是检查自己客户机的第55行)消息消息=(消息)inputStream.readObject();它工作!!!他们都必须有相同的包裹名称谢谢大家!!!