I want to make chat application using java networking. So far I have made server and client class in two different projects and each of them have the same Message class:
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;
}
Than I send a message inside client class like this:
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"));
The error occurs when I want to get that message in my server project:
Message message = (Message) inputStream.readObject();
And I get this:
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)
I know that server project can not recognize Message class from client despite they are the same classes, but I really don't know how to fix this.
Does anyone know the solution?