Hi,
ich lese mich im Augenblick in die Netzwerkprogrammierung ein und will mir einen Chat bauen. Dazu sollen nicht einfach nur Strings übertragen werden, sondern Nachrichtenbjekte.
Jetzt habe ich folgende zwei Messageklassen. Haben noch wenig Inhalt, trotzdem soll schon einmal das Senden funktionieren.
Beide Klassen verwende ich für die Clientanwendung und für die Serveranwendung.
So wird bei mir eine Nachricht vom Server an den Client gesendet:
Und so wird die Nachricht vom Client empfangen:
Die ServerMessageHandler-Klasse soll schauen, was für eine Art Nachricht gesendet wurde und behandelt dann die Weiterverarbeitung der Nachricht (Anzeige in der GUI o.ä.):
Jetzt gehts um den instanceof-Teil. Der Compiler spuckt mir folgenden Fehler aus:
Jetzt liegt wohl das Problem an den unterschiedlichen Paketen der Server- und Clientseite.
Wie kann ich das angehen?
ich lese mich im Augenblick in die Netzwerkprogrammierung ein und will mir einen Chat bauen. Dazu sollen nicht einfach nur Strings übertragen werden, sondern Nachrichtenbjekte.
Jetzt habe ich folgende zwei Messageklassen. Haben noch wenig Inhalt, trotzdem soll schon einmal das Senden funktionieren.
Java:
public abstract class ServerMessage implements Serializable {
private long time;
...
}
Java:
public class UserMessage extends ServerMessage {
private String username = null;
private String text = null;
...
Beide Klassen verwende ich für die Clientanwendung und für die Serveranwendung.
So wird bei mir eine Nachricht vom Server an den Client gesendet:
Java:
UserMessage message = new UserMessage();
message.setTime(System.currentTimeMillis());
message.setUsername("Spitfire777");
message.setText("Hello World!");
oos.writeObject(message);
oos.flush();
Und so wird die Nachricht vom Client empfangen:
Java:
ServerMessageHandler.handleMessage((ServerMessage) getObjectInputStream().readObject());
Die ServerMessageHandler-Klasse soll schauen, was für eine Art Nachricht gesendet wurde und behandelt dann die Weiterverarbeitung der Nachricht (Anzeige in der GUI o.ä.):
Java:
public class ServerMessageHandler {
public static void handleMessage(ServerMessage sm) {
if (sm instanceof UserMessage) {
UserMessage message = (UserMessage) sm;
System.out.println(message.getUsername() + " sagt: " + message.getText());
}
else if (sm instanceof UserInvitationMessage) {
UserInvitationMessage message = (UserInvitationMessage) sm;
System.out.println("Es wurde eine Einladung gesendet.");
}
else if (sm instanceof AdminMessage) {
//...
}
}
}
Jetzt gehts um den instanceof-Teil. Der Compiler spuckt mir folgenden Fehler aus:
Code:
java.lang.ClassNotFoundException: server.UserMessage
Jetzt liegt wohl das Problem an den unterschiedlichen Paketen der Server- und Clientseite.
Wie kann ich das angehen?