Probleme beim Senden von Nachrichten an den Server

Zel2491

Aktives Mitglied
Moin moin,

ich habe einen Server + Client und möchte jetzt eine Nachricht an den Server schicken...wenn ich das tue wirft er mir aber folgende Fehlermeldung aus:


Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at network.Client.<init>(Client.java:43)



Das ist jetzt stark gekürzt, allerdings ist der wichtigste Teil dabei:

[java=43]
out.write(sf.getUsertxt());
[/code]
out ist halt mein writer, und sf ist eine Instanz meiner Klasse StartingFrame - getUsertxt() sollte klar sein, da zieh ich halt den Inhalt aus meinem Textfeld heraus.

Naja, jedenfalls wirft er dabei halt diese Fehlermeldung - weiß jemand, woran das liegt?^^

Gruß Zel
 

VfL_Freak

Top Contributor
Moin,

Das ist jetzt stark gekürzt, allerdings ist der wichtigste Teil dabei:
:lol: der war gut :D

ich habe einen Server + Client und möchte jetzt eine Nachricht an den Server schicken...wenn ich das tue wirft er mir aber folgende Fehlermeldung aus:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at network.Client.<init>(Client.java:43)

[java=43]
out.write(sf.getUsertxt());
[/code]
Wenn das wirklich die genannte Zeile 43 ist, sollte ja wohl eines der beiden Objekte (out oder sf) null sein, was sich im Debugger schnell zeigen dürfte!

Wie steht denn der Text im Frame ??

Vielleicht wären doch 2 oder 3 weitere Codezeilen gut !! Vorsicht: Ironie ;)

Gruß
Klaus
 

Zel2491

Aktives Mitglied
Ja ne :D Ich wollt nur nicht da 42 Zeilen Fehlermeldung auswerfen^^

Bin bedingt schon selber weitergekommen:

mein sf war null...da hattest du schonmal Recht^^

Emm, ich hab das jetzt soweit geändert...ach ich poste einfach quellcode :D


Java:
public Client(String ip, UserInterfaceClient uic, StartingFrame sf) {
        this.ip = ip;
        this.uic = uic;
        this.sf = sf;

        try {

            server = new Socket(this.ip, 2100);
            in =
                new BufferedReader(new InputStreamReader(
                    server.getInputStream()));

            out = new OutputStreamWriter(server.getOutputStream());
            out.write(this.sf.getUsertxt());

            JOptionPane.showMessageDialog(null, "Verbindung hergestellt");

Nur hab ich halt jetzt das Problem, dass ich, wenn ich
Code:
 new Client(...);
aufrufe, einen Parameter des Typs StartingFrame übergeben muss...

Java:
client = new Client(ipAdresstxt.getText(), uic, sf);

wobei sf:
Java:
private StartingFrame sf;
ist, allerdings initialisiere ich sf nicht, da ich nicht genau weiß, wie ich das initialisieren soll -->
Java:
sf = new StartingFrame();
kanns ja nicht sein, weil ich dann ja einen neuen Frame erzeuge...

OOP ist einfach nicht meine größte Stärke xD


Edith:

Hier nochmal die ganze Fehlermeldung, wenn sie Dir hilft bin ich zufrieden^^




Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at network.Client.<init>(Client.java:44)
at gui.StartingFrame$MyKeyListener.keyPressed(StartingFrame.java:130)
at java.awt.Component.processKeyEvent(Component.java:6331)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2801)
at java.awt.Component.processEvent(Component.java:6150)
at java.awt.Container.processEvent(Container.java:2085)
at java.awt.Component.dispatchEventImpl(Component.java:4735)
at java.awt.Container.dispatchEventImpl(Container.java:2143)
at java.awt.Component.dispatchEvent(Component.java:4565)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1850)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:712)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:990)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:855)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:676)
at java.awt.Component.dispatchEventImpl(Component.java:4607)
at java.awt.Container.dispatchEventImpl(Container.java:2143)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4565)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:679)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:638)
at java.awt.EventQueue$1.run(EventQueue.java:636)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:652)
at java.awt.EventQueue$2.run(EventQueue.java:650)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:649)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
Moin,

tja, nun kennen wir leider weder Deine Klasse "startingFrame" noch wissen wir, was die Funktion "getUsertxt()" wirklich macht ..... :noe:

Was stört Dein Programm denn an der genannten Variante?

Gruß
Klaus

[EDIT]
gerade erst Dein edit gelesen ;-)

at gui.StartingFrame$MyKeyListener.keyPressed(StartingFrame.java:130)

Was steht denn in dieser Zeile 130 ???:L
 

Zel2491

Aktives Mitglied
Aaaaalso:

in Zeile 130 steht:

[java=130]
client = new Client(ipAdresstxt.getText(), uic, sf);
[/code]
und direkt im Anschluss folgt dann:
Java:
Thread clientThread = new Thread(client);
clientThread.start();

Der wird irgendwas an "sf" rummäkeln wollen...

Ich poste einfach mal die Klasse StartingFrame...nützt nix, wenn ich da nur 2 Zeile draus schreibe


Java:
package gui;

import network.*;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class StartingFrame extends JFrame {

    private static final long serialVersionUID = -687330130050065776L;

    private JLabel username = new JLabel("Enter Nickname:");

    private JTextField usertxt = new JTextField(10);

    private JLabel ipAdress = new JLabel("Enter IP:");

    private JTextField ipAdresstxt = new JTextField(10);

    private JButton accept = new JButton("OK");

    private JPanel center = new JPanel();

    private JPanel south = new JPanel();

    private boolean show;

    private Client client;

    private UserInterfaceClient uic;
    
    private StartingFrame sf;

    public StartingFrame() {

        super("Cool Version 1.0 Starting Frame");
        actionHandler();

        this.setLayout(new BorderLayout());
        this.setSize(200, 200);
        this.setLocationRelativeTo(null);
        this.setResizable(false);
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        center.setLayout(new GridLayout(2, 2));

        center.add(username);
        center.add(usertxt);
        center.add(ipAdress);
        center.add(ipAdresstxt);

        south.add(accept);

        this.add(center);
        this.add(BorderLayout.SOUTH, south);

        this.pack();
        show = true;
        this.setVisible(show);
    }

    private void actionHandler() {

        accept.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent evt) {
                show = false;
                setVisible(show);

                if (!usertxt.getText().isEmpty()
                    && !ipAdresstxt.getText().isEmpty()) {
                    uic =
                        new UserInterfaceClient(usertxt.getText(), ipAdresstxt
                            .getText());
                    uic.setVisible(true);
                    

                    client = new Client(ipAdresstxt.getText(), uic, sf);

                    Thread clientThread = new Thread(client);
                    clientThread.start();

                } else {
                    JOptionPane.showMessageDialog(null, "Ungültige Eingabe!");
                }

            }
        });

        usertxt.addKeyListener(new MyKeyListener());
        ipAdresstxt.addKeyListener(new MyKeyListener());

    }

    public String getUsertxt() {
        return usertxt.getText();
    }

    public String getIpAdresstxt() {
        return ipAdresstxt.getText();
    }

    class MyKeyListener implements KeyListener {

        public void keyPressed(KeyEvent e) {
            int key = e.getKeyCode();

            if (key == KeyEvent.VK_ENTER) {
                if (!usertxt.getText().isEmpty()
                    && !ipAdresstxt.getText().isEmpty()) {
                    show = false;
                    setVisible(show);
                    uic =
                        new UserInterfaceClient(usertxt.getText(),
                            ipAdresstxt.getText());
                    uic.setVisible(true);


                    client = new Client(ipAdresstxt.getText(), uic, sf);

                    Thread clientThread = new Thread(client);
                    clientThread.start();

                } else {
                    JOptionPane.showMessageDialog(null, "Ungültige Eingabe!");
                }
            }

        }

        public void keyReleased(KeyEvent e) {

        }

        public void keyTyped(KeyEvent e) {

        }

    }

}

Im Grunde gibt der Benutzer (soll ja ein Chatprogramm werden) seinen Nicknamen ein und die IpAdresse, zu der er connecten möchte.

Dann schließt sich das Fenster und ein neues Fenster der Klasse UserInterfaceClient erscheint - da kann dann der User halt seinen Text eintippen, bzw hat halt das Chatfenster vor seinen Augen.

mein getUsertxt() ist zwar in der Klasse StartingFrame drin, ich poste sie hier aber noch einmal gesondert:

Java:
public String getUsertxt() {
        return usertxt.getText();
    }
 

Zel2491

Aktives Mitglied
Jo^^

Zeile 44 ist:

[java=44]
out.write(this.sf.getUsertxt());
[/code]

nur weiß ich halt nicht, warum da eine NPE auftritt...
 

irgendjemand

Top Contributor
aua ... hier sind wohl noch 2 weitere fehler zu erwähnen

1) I/O-ops NIE im EDT ausführen ... das freezed die GUI
2) <init> verrät das du irgendwas im construtor machst ... solltest du auch ändern weil so die konsistenz des neuen objektes nicht gewährleistet ist ...
 

VfL_Freak

Top Contributor
Moin,

ja, der gesamte Aufbau ist sicherlich suboptimal ;)

Deine lokale Variable "private StartingFrame sf" nützt Dir hier sicherlich gar nichts! Zum einen wäre sie nicht initialisiert, zum anderen hast Du ja durch den Konstruktor der Klasse schon ein Objekt vom Typ "StartingFrame", das Du halt durchreichen musst, ggf. per this ...

Gruß
Klaus
 

Zel2491

Aktives Mitglied
Gut...ich hab mir schon gedacht, dass es mit meinem sf zu tun hat - jetzt weiß ich es mit Sicherheit...
Hat jemand eine Idee oder einen Vorschlag, wie es gehen könnte?
Ihr merkt schon, ich stehe ziemlich auf dem Schlauch^^
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z Socket Probleme beim Senden und Empfangen Netzwerkprogrammierung 5
P Probleme beim weiter senden von Datein Netzwerkprogrammierung 10
S Probleme beim senden von Daten per POST Methode an PHP Scrip Netzwerkprogrammierung 5
A Probleme beim Klassen-Import von sun.misc. ... Netzwerkprogrammierung 19
B Probleme beim ersten Netzwerkprogramm Netzwerkprogrammierung 3
C Socket Probleme beim Lesen und Schreiben aus/in einen Socket Netzwerkprogrammierung 2
T RMI - Probleme beim Starten des Clients Netzwerkprogrammierung 4
G Probleme mit Firewall beim empfangen von dateien über socket Netzwerkprogrammierung 6
S Probleme beim Beschränken der Geschwindigkeit Netzwerkprogrammierung 6
M Probleme beim Abfangen von Streams Netzwerkprogrammierung 5
S Probleme bei Java-Installation auf Server (Linux/Shell/Terminal) Netzwerkprogrammierung 6
platofan23 Probleme mit Socket bei Android Studio? Netzwerkprogrammierung 22
J Probleme mit Multicast über IPv6, DatagramChannel Netzwerkprogrammierung 1
Niggo_ Probleme mit Java Mail Netzwerkprogrammierung 14
F Probleme mit Connection Reset bei Telnet Verbindung Netzwerkprogrammierung 1
K Probleme bei HTML-Mail-Abruf mit IMAP bei 1und1 Netzwerkprogrammierung 2
L Socket SSLServer Probleme Netzwerkprogrammierung 0
H Probleme mit UDP Netzwerkprogrammierung 0
F Server/Client Probleme Netzwerkprogrammierung 3
R Probleme mit JMS Netzwerkprogrammierung 1
M RMI RMI Probleme zwischen Client und Server Netzwerkprogrammierung 5
M Probleme mit FTP Netzwerkprogrammierung 19
windl URLConnection unter 1.7 macht Probleme Netzwerkprogrammierung 14
Maxim6394 Probleme bei Messenger Netzwerkprogrammierung 16
I Socket UDP Hole Punching bereitet Probleme Netzwerkprogrammierung 14
S HTTP Probleme mit POST-Befehl Netzwerkprogrammierung 2
R FTPS - Probleme mit FTPSClient Netzwerkprogrammierung 2
S Probleme mit XMLEncoder/XMLDecoder Netzwerkprogrammierung 2
D Server - Client Probleme Netzwerkprogrammierung 9
Weiti HTTP Zertifikat-Probleme - InstallCert.java Netzwerkprogrammierung 2
M Socket Probleme mit einfacher Socketverbindung Netzwerkprogrammierung 3
H Probleme mit GUI (RMI) Netzwerkprogrammierung 6
T RMI Probleme mit RMI-Server Netzwerkprogrammierung 4
J Probleme bei RSA mit byte[] bei Versand über RMI Netzwerkprogrammierung 2
T FTP Probleme mit Passiv und Binary Mode Netzwerkprogrammierung 3
J Probleme mit Threads (Client terminiert) Netzwerkprogrammierung 4
S Socket SocketServer und Client machen Probleme Netzwerkprogrammierung 6
B Server / Client Anwendung, Client GUI Probleme Netzwerkprogrammierung 11
F RMI probleme Netzwerkprogrammierung 3
D Probleme bei mehreren Clients uns Senden von Messages Netzwerkprogrammierung 16
E jPcap Probleme Netzwerkprogrammierung 3
B HTTP Probleme mit HttpClient? Netzwerkprogrammierung 2
T Probleme mit Jpcap Netzwerkprogrammierung 18
P Probleme mit OutputStream Netzwerkprogrammierung 7
B Probleme mit FTP verbindung Netzwerkprogrammierung 22
L Probleme bei Chatserver Netzwerkprogrammierung 6
A Probleme mit kleinem Netzwerk Programm Netzwerkprogrammierung 30
G Probleme mit SecruityManager + RMI Netzwerkprogrammierung 10
derMartin Probleme mit NNTP Client Netzwerkprogrammierung 2
A Probleme mit Citrix Netzwerkprogrammierung 17
A Probleme mit kleinem Messenger-Programm Netzwerkprogrammierung 4
K RXTXcomm : Install - Probleme Netzwerkprogrammierung 7
R Probleme mit UDP Netzwerkprogrammierung 4
P Probleme bei Chat programm Netzwerkprogrammierung 2
I Probleme mit 'JSSE Samples' von Sun Netzwerkprogrammierung 5
E InetAddress Klasse-Probleme Netzwerkprogrammierung 4
M dateien übertragen, probleme mit versch. Strömen? Netzwerkprogrammierung 4
R Rechte Probleme bei Applets Netzwerkprogrammierung 16
D EA-Exception Network Adapter macht probleme Netzwerkprogrammierung 2
P Probleme mit Input- / Output-Streams Netzwerkprogrammierung 2
V probleme mit dem chat programm Netzwerkprogrammierung 4
F WLAN Probleme (CLIENT-SERVER) Netzwerkprogrammierung 4
J Probleme mit ObjectOutputStream! Netzwerkprogrammierung 15
G Fragen/Probleme mit JavaMail Netzwerkprogrammierung 2
N Java-Chat (lauffähig) macht Probleme auf der Konsole Netzwerkprogrammierung 6
P Probleme mit einem Array aus Sockets Netzwerkprogrammierung 2
C Probleme bei Dateiupload mit socket Netzwerkprogrammierung 4
T FTP Chatprogramm probleme Netzwerkprogrammierung 2
C RMI Probleme mit iptables Netzwerkprogrammierung 2
D socket exception + timing probleme Netzwerkprogrammierung 2
G Probleme bei Proxy-Server! Netzwerkprogrammierung 5
S Probleme mit HttpURLConnection Netzwerkprogrammierung 10
D Habe 2 Probleme: Input eingabe und Multi Socket Server Netzwerkprogrammierung 2
OnDemand Json Objekt leeres Array beim lesen Netzwerkprogrammierung 9
T Brauche Hilfe beim GET-String für HttpURLConnection Netzwerkprogrammierung 4
A sporadischer Fehler beim Schreiben auf NAS Netzwerkprogrammierung 2
A Automatisches Update beim Starten Netzwerkprogrammierung 1
J Hilfe beim programmiern einer App zur Anmeldung im Wlan-Netzwerk Netzwerkprogrammierung 0
A Problem beim Senden von Client zu Server Netzwerkprogrammierung 10
M Nur die erste Nachricht kommt beim Server an Netzwerkprogrammierung 11
M jsf-seite beim hinzufügen einer csv-datei in einen ordner aktualiseren Netzwerkprogrammierung 0
R Problem beim Programmieren eines Chatprogramms Netzwerkprogrammierung 5
S Umstellung AS400 auf Postgre - Problem beim Arbeiten mit Metadaten Netzwerkprogrammierung 2
S Seltsames Verhalten beim Empfangen von Daten über DataInputStream Netzwerkprogrammierung 12
G Socket NIO2 Problem mit AsynchronousSocketChannel beim Schließen Netzwerkprogrammierung 3
D RMI Problem beim shutdown von verteilter CORBA-Anwendung Netzwerkprogrammierung 6
S Socket Verschiedene Exceptions beim Übertragen von Bildern über Socket Netzwerkprogrammierung 20
C ObjectInputReader wirft beim zweiten Aufruf eine Exception Netzwerkprogrammierung 3
Y RMI Initialisierung beim Server Netzwerkprogrammierung 10
B Socket Aufhängen beim Lesen Netzwerkprogrammierung 4
M Problem beim Datenempfang Netzwerkprogrammierung 2
DEvent Keine IOException beim schreiben Socket Netzwerkprogrammierung 3
M Authentifizierung beim Start von Java-Applets Netzwerkprogrammierung 2
N NIO Problem beim speziellen Behandeln von einzelnen Benutzern Netzwerkprogrammierung 13
E HTTP Problem beim Auslesen von Websiten Netzwerkprogrammierung 6
G Kryptische Zeichen beim Auslesen einer Website Netzwerkprogrammierung 11
Y Problem mit ObjectInputStream beim lesen vom Socket Netzwerkprogrammierung 10
T ServerSocket bleibt beim lesen von Input hängen Netzwerkprogrammierung 2
P HTTP Problem beim Download von einer Datei Netzwerkprogrammierung 4
clupus Exception beim Schließen eines Sockets Netzwerkprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben