Hallo habe ein problem und zwar programmiere ich einen kleinen chat nur beim login bekomme ich immer wieder eine NullPointer exeption.
Ich habe gesucht wie ein bekloppter aber finde nicht raus was ich falsch mache.
Das ganze habe ich mittels xsocket programmiert.
Hier ist der fehler:
hier kommt die zeile 108:
und einmal die gesamte client.java:
und am server öffne ich den server wie folgt (ohne gemecker):
Ich hoffe mir kann jemand helfen den fehler zu finden
danke im voraus
Ich habe gesucht wie ein bekloppter aber finde nicht raus was ich falsch mache.
Das ganze habe ich mittels xsocket programmiert.
Hier ist der fehler:
Code:
null
Exception in thread "AWT-EventQueue-3" java.lang.NullPointerException
at client.client.sendmsg(client.java:108)
at client.GUI.send(GUI.java:86)
at client.GUI.<init>(GUI.java:58)
at client.login.jButton1ActionPerformed(login.java:165)
at client.login.access$100(login.java:21)
at client.login$2.actionPerformed(login.java:102)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
hier kommt die zeile 108:
Java:
nbc.write(";|--LOGIN--|~" + nick + ":" + newmsg + ";");
und einmal die gesamte client.java:
Java:
package client;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.xsocket.connection.IDataHandler;
import org.xsocket.connection.INonBlockingConnection;
import org.xsocket.connection.NonBlockingConnection;
public class client {
INonBlockingConnection nbc;
public GUI g;
public String nick;
IDataHandler clientHandler;
public client(GUI g, String nick) {
this.g = g;
this.nick = nick;
try {
// Starte verbindung
nbc = new NonBlockingConnection("webspace-sponsor.eu", 8492, new clientHandler(nbc, g));
} catch (IOException ex) {
Logger.getLogger(client.class.getName()).log(Level.SEVERE, null, ex);
} catch (ExceptionInInitializerError eie) {
System.out.println(eie.getMessage());
}
}
public void sendmsg(String msg) throws IOException {
// Wenn nachricht == /quit
if (msg.equalsIgnoreCase("/quit")) {
// Beende verbindung
nbc.close();
// Schließe fenster
g.quit();
// Wenn msg mit /p startet
} else if (msg.startsWith("/p")) {
// nehme die ersten 3 zeichen des strings weg
String newmsg = msg.substring(3);
// schreibe nachricht mit vorsatz |--PRIVAT--| auf den server
nbc.write(";" + nick + "~|--PRIVAT--|" + newmsg + ";");
// Wenn msg mit /clear startet
} else if (msg.startsWith("/clear")) {
// Leere nachrichtenfeld
g.clearTP();
// Wenn msg mit /p startet
} else if (msg.startsWith("/go")) {
// nehme die ersten 4 zeichen des strings weg
String newmsg = msg.substring(4);
// schreibe nachricht mit vorsatz |--CHCHN--| auf den server
nbc.write(";" + nick + "~|--CHCHN--|" + newmsg + ";");
// Wenn msg mit /nc startet
} else if (msg.startsWith("/go")) {
// nehme die ersten 4 zeichen des strings weg
String newmsg = msg.substring(4);
// schreibe nachricht mit vorsatz |--CHCHN--| auf den server
nbc.write(";" + nick + "~|--CHCHN--|" + newmsg + ";");
// Wenn msg mit /nc startet
} else if (msg.startsWith("/w")) {
// nehme die ersten 4 zeichen des strings weg
String newmsg = msg.substring(3);
// schreibe nachricht mit vorsatz |--ADDCHAN--| auf den server
nbc.write(";" + nick + "~|--PROFIL--|" + newmsg + ";");
// Wenn msg mit /ntc startet
} else if (msg.startsWith("/ntc")) {
// nehme die ersten 5 zeichen des strings weg
String newmsg = msg.substring(5);
// schreibe nachricht mit vorsatz |--ADDTCHAN--| auf den server
nbc.write(";" + nick + "~|--ADDTCHAN--|" + newmsg + ";");
// Wenn msg mit /rc startet
} else if (msg.startsWith("/rc")) {
// nehme die ersten 4 zeichen des strings weg
String newmsg = msg.substring(4);
// schreibe nachricht mit vorsatz |--REMCHAN--| auf den server
nbc.write(";" + nick + "~|--REMCHAN--|" + newmsg + ";");
// Wenn msg mit /rtc startet
} else if (msg.startsWith("/rtc")) {
// nehme die ersten 5 zeichen des strings weg
String newmsg = msg.substring(5);
// schreibe nachricht mit vorsatz |--REMTCHAN--| auf den server
nbc.write(";" + nick + "~|--REMTCHAN--|" + newmsg + ";");
// Wenn msg mit /kick startet
} else if (msg.startsWith("/kick")) {
// nehme die ersten 6 zeichen des strings weg
String newmsg = msg.substring(6);
// schreibe nachricht mit vorsatz |--KICK--| auf den server
nbc.write(";" + nick + "~|--KICK--|" + newmsg + ";");
} else if (msg.startsWith("/lock")) {
// nehme die ersten 6 zeichen des strings weg
String newmsg = msg.substring(6);
// schreibe nachricht mit vorsatz |--KICK--| auf den server
nbc.write(";" + nick + "~|--LOCK--|" + newmsg + ";");
} else if (msg.startsWith("/amsg")) {
// nehme die ersten 6 zeichen des strings weg
String newmsg = msg.substring(6);
// schreibe nachricht mit vorsatz |--KICK--| auf den server
nbc.write(";" + nick + "~|--AMSG--|" + newmsg + ";");
} else if (msg.startsWith("/acomment")) {
// nehme die ersten 6 zeichen des strings weg
String newmsg = msg.substring(10);
// schreibe nachricht mit vorsatz |--KICK--| auf den server
nbc.write(";" + nick + "~|--ACOMMENT--|" + newmsg + ";");
} else if (msg.startsWith("/login ")) {
// nehme die ersten 8 zeichen des strings weg
String newmsg = msg.substring(8);
// schreibe nachricht mit vorsatz |--KICK--| auf den server
nbc.write(";|--LOGIN--|~" + nick + ":" + newmsg + ";");
} else {
nbc.write(";" + nick + "~" + msg + ";");
}
}
}
und am server öffne ich den server wie folgt (ohne gemecker):
Java:
public static void main(String[] args) {
try {
srv = new Server("localhost", 8492, new xSocketDataHandler());
srv.run();
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
Ich hoffe mir kann jemand helfen den fehler zu finden
danke im voraus