NullPointer finde den grund nicht

Hakkemaster

Mitglied
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:

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
 
Könnte es daran liegen? Du übergibst in new clientHandler() nbc, wobei nbc in diesem Fall noch null sein müsste.

Java:
 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());
        }
 
sooo die nullpointer ist behoben... danke schonmal

nun ergibt sich ein zweites problem:
Code:
Exception in thread "AWT-EventQueue-4" java.lang.NoClassDefFoundError: Could not initialize class org.xsocket.connection.NonBlockingConnection
	at client.client.<init>(client.java:22)
	at client.GUI.<init>(GUI.java:56)
	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)

allerdings habe ich die xsocket-2.8.2.jar schön in alle erdenklichen verzeichnisse gepackt, bei netbeans als lib hinzugefügt und die jar in die jar gepackt (was mich irritiert die absolutLayout.jar findet er und die is im selben ordner wie die xsocket).

eingebunden habe ichs wie folgt:

Code:
import org.xsocket.*;
import org.xsocket.connection.*;

im server wie im client. der server läuft aber der client zickt.

ich habe da echt keine ahnung mehr was ich noch versuchen soll.

ich hoffe ihr habt noch nen super tipp für mich.

achja die zeile in der die exeption geworfen wird ist folgende:
Java:
      nbc = new NonBlockingConnection("webspace-sponsor.eu", 8492, new clientHandler(this, g));

ich hoffe ihr könnt mir nochmal helfen 🙂

gruß hakkemaster
 
Ist im NetBeans Editor das NonBlockingConnection rot unterstrichen oder nicht? Was passiert, wenn du auf "go to Sources" oder so gehst?
 
rot unterstrichen ist es nicht und wenn ich auf go to sources gehe passiert nichts.

Das komische ist wenn ichs im netbeans starte läuft es und wenn ichs dann auf dem server versucher über das applet zu laden geht net.
 
So ein paar grundlegende Fragen hab ich dazu.

Wie baust du das ganze Programm?
Hast du Ahnung von Ant?
Lässt sich das Programm außerhalb von NetBeans starten?
 
Hallo,

ich habe nun rausbekommen das der fehler nur auftritt wenn
Java:
nbc.write(";|--LOGIN--|~" + nick + ":" + newmsg + ";");
ausgeführt wird.

hier nochmal der vollständige code zur einsicht:

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 {

    public INonBlockingConnection nbc;
    public GUI g;
    public String nick;
    private 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(this,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 + ";");
        }
    }
}

ich hoffe einer findet einen fehler
 

Zurück
Oben