# Problem bei der Ausgabe in einem Applet



## Denis103 (15. Jun 2006)

Hallo,

ich hab mir ein ChatClientApplet von meinem alten ChatClient in einem JFrame aus zusammengebastelt.

Ich erzeuge mir in der Appletklasse ein Objekt von sich selbst und hab mir eine Funktion SetMessage geschrieben.
Das Lesen der eingehenden Nachrichten übernimmt ein Thread. Beim starten des Thread übergebe ich dazu das Objekt was ich mir erzeugt habe. Wenn eine Nachricht eingeht (was klappt) möchte ich diese dann im Applet ausgeben.
Daher schreib ich im Thread "applet.setMessage(string);" Nur gibt er mir die Nachricht nicht aus. In der Konsole kommt die Ausgabe:


```
Exception in thread "Thread-5" java.lang.NullPointerException
	at chatclient.ChatClientApplet.SetMessage(ChatClientApplet.java:56)
	at chatclient.ClientThread.run(ChatClientApplet.java:714)
```

Wo kann denn der Fehler liegen?

MfG
Denis


----------



## dieta (15. Jun 2006)

Das bedeutet, dass du in deinem "Thread-5" versuchst, auf ein "null"-Objekt zuzugreifen.
Ich kenne deinen Code nicht, darum kann ich dir momentan nicht weiterhelfen. Poste mal die entsprechenden Quellcodeabschnitte.


----------



## Denis103 (16. Jun 2006)

Ich hoffe du kannst mir helfen 

Das ist ein Teil der Appletklasse (Deklaration des Applet-Objekts):


```
public class ChatClientApplet extends javax.swing.JApplet {
    
    static Socket s;
    static ObjectOutputStream oos;
    static ChatClientApplet applet = new ChatClientApplet();
```

Das ist der Code von dem Button Verbinden - der die Verbindung zum Server aufbaut und dann den Thread startet:


```
private void jButton_verbindenActionPerformed(java.awt.event.ActionEvent evt) {                                                  
        boolean alles_ok=false;
        try{
            s = new Socket(this.jTextField_server_ip.getText().trim(),Integer.valueOf(this.jTextField_server_port.getText().trim()).intValue());
            oos = new ObjectOutputStream(s.getOutputStream());
            new ClientThread(s,applet).start();
            alles_ok=true;
        }
        catch(IOException e){
            SetFehler();    //Ausgabe beim Login, wenn ein Fehler auftritt
        }
        if(alles_ok==true){
            this.jButton_verbinden.setEnabled(false);
            this.jButton_trennen.setEnabled(true);
            this.jTextField_server_ip.setEditable(false);
            this.jTextField_server_port.setEditable(false);
        }
    }
```

Das ist dann ein Teil des Thread. Unten ist dann zu sehen, das die Empfangene Nachricht an das Applet übergeben werden soll, um sie da auszugeben. 
Im JFrame klappte das alles wunderbar. Nur jetzt nicht mehr im Applet....



```
class ClientThread extends Thread{
    private ObjectInputStream ois;
    private Vector v = new Vector();
    private Socket cs;
    private ChatClientApplet applet;
    
    ClientThread(Socket s, ChatClientApplet a){
        cs=s;
        applet=a;
    }
    
    public void run(){
        System.out.println("Thread startet");
        try {
            ois = new ObjectInputStream(cs.getInputStream());
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        
        boolean isb=true;
        while(isb){
            try {
                v=(Vector) ois.readObject();
            } catch (ClassNotFoundException ex) {
                ex.printStackTrace();
            } catch (IOException ex) {
                ex.printStackTrace();
                System.out.println("Verbindung abgebrochen");
                applet.SetMessage("Verbindung zum Server ist abgebrochen");
                applet.ClearJTable();
                isb=false;
                break;
            }
            if(v.elementAt(0).equals(new String("msg")) && !(v.elementAt(2).equals(new String("")))){
                applet.SetMessage(v.elementAt(1)+": "+v.elementAt(2));
                System.out.println("msg");
            }
```


----------



## Murray (16. Jun 2006)

Laut Stack-Trace steckt der Fehler doch in chatclient.ChatClientApplet.SetMessage(ChatClientApplet.java:56); poste doch mal die Methode.


----------

