Event Handling windowAdapter - NullPointerException beim Schließen

Lehrlii

Mitglied
Hi,
hab mir einen kleinen Chat gebastelt und hab leider ein Problem beim Schließen des Programms.
Jedes mal wenn ich den "X"-'Button benutze bekomm ich folgende Fehlermeldung:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

Mein Client besteht aus 2 Klassen, eine Klasse ist der Client selbst, die andere soll noch so weit ausgebaut werden, dass ich IP, Port und Username einstellen kann und startet bis jetzt nur den Client.

Klasse des Client, client:
Java:
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class client extends JFrame implements WindowListener{
	
	private JTextField userText;
	private JTextArea chatWindow;
	private ObjectOutputStream output;
	private ObjectInputStream input;
	private String message = "";
	private String serverIP;
	private int serverPort=7777;
	private Socket connection;
	
	//constructor
	public client(String host){
		super("Client");
		serverIP = host;
		userText = new JTextField();
		userText.setEditable(false);
		userText.addActionListener(
			new ActionListener(){
				public void actionPerformed(ActionEvent event){
					sendMessage(event.getActionCommand());
					userText.setText("");
				}
			}
		);
		add(userText, BorderLayout.NORTH);
		chatWindow = new JTextArea();
		add(new JScrollPane(chatWindow), BorderLayout.CENTER);
		addWindowListener(this);
		setSize(300,150);
		setVisible(true);
	}
	
	//connect to server
	public void startRunning(){
		try{
			connectToServer();
			setupStreams();
			whileChatting();
		}catch(EOFException eofException){
			showMessage("\nClient terminated the conneciton");
		}catch(IOException ioException){
			ioException.printStackTrace();
		}finally{
			closeCrap();
		}
	}
	
	//connect to a server
	private void connectToServer() throws IOException{
		showMessage("Attempting connection---\n");
		connection = new Socket(InetAddress.getByName(serverIP), serverPort);
		showMessage("Cennected to :" + connection.getInetAddress().getHostName());
	}
	
	//setup streams to send and receive messages
	private void setupStreams() throws IOException{
		output = new ObjectOutputStream(connection.getOutputStream());
		output.flush();
		
		input = new ObjectInputStream(connection.getInputStream());
		showMessage("\nstreams are setup \n");
	}
	
	//while chatting with server
	private void whileChatting() throws IOException{
		ableToType(true);
		do{
			try{
				message = (String) input.readObject();
				showMessage("\n" + message);
			}catch(ClassNotFoundException classNotFoundException){
				showMessage("unkown object type");
			}
		}while(!message.equals("SERVER - END)"));
	}
	//close the streams and sockets
	private void closeCrap(){
		showMessage("closing....");
		ableToType(false);
		try{
			output.close();
			input.close();
			connection.close();
			System.exit(0);
		}catch(IOException ioException){
			ioException.printStackTrace();
		}
	}
	
	//send messages to server
	private void sendMessage(String message){
		try{
			output.writeObject("CLIENT - " + message);
			output.flush();
			showMessage("\nClient - " + message);
		}catch(IOException ioExceotion){
			chatWindow.append("failed sending message");
		}
	}
	
	//update chat windows
	private void showMessage(final String message){
		SwingUtilities.invokeLater(
			new Runnable(){
				public void run(){
					chatWindow.append(message);
				}
			});
	}
	
	//gives user permission to type into the chat window
	private void ableToType(final boolean tof){ //tof ... true or false
		SwingUtilities.invokeLater(
			new Runnable(){
				public void run(){
					userText.setEditable(tof);
				}
			}
				
		);
	}
	
	//window methods, used to close the connection with the x button
	@Override
	public void windowClosing( WindowEvent event )  {
		try {
			output.writeObject("CLIENT - END");
			output.flush();
			closeCrap();
			System.exit(0);
		} catch (IOException ioException) {
			ioException.printStackTrace();
		}
	
	  }
	
	 @Override
	 public void windowClosed( WindowEvent event ) { /*Empty*/ }
	 
	 @Override
	 public void windowDeiconified( WindowEvent event ) { /*Empty*/ }
	 
	 @Override
	 public void windowIconified( WindowEvent event ) { /*Empty*/ }
	 
	 @Override
	 public void windowActivated( WindowEvent event ) { /*Empty*/ }
	
	 @Override
	 public void windowDeactivated( WindowEvent event ) { /*Empty*/ }
	 
	 @Override
	 public void windowOpened( WindowEvent event ) { /*Empty*/ }
	  

}


Klasse zum Starten des Clients, clientTest:
Java:
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class clientTest {
		
	public static void main(String[] args) {
		client client;
		client = new client("127.0.0.1");
		client.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		client.startRunning();
	}
}

Dazu hätte ich jetzt 2 Fragen:
1. Was heißt genau die oben genannte Fehlermeldung?
2. Wie kann ich den Fehler beheben und worin liegt er?

Ich bedanke mich schon mal im vorhinein für die Antworten und mit freundlichen Grüßen
Lehrlii
 
S

SlaterB

Gast
es ist die häufigste Fehlermeldung überhaupt, noch nicht gesehen?
irgendeine Variable, auf die zugriffen wird, ist null,

gibts nicht mehr im StackTrace, genaue Zeilennummern in deiner client-Klasse?
prüfe duch Ausgaben, ob die allgemein verdächtigen Objekte, connection, output, input, null sind oder nicht

funktioniert es denn vorher, steht connection, kann man schreiben und lesen?

bei mir auf die Schnelle nicht zu testen mit Verbindung, sieht grob betrachtet alles richtig aus,
aber der Fehler spricht natürlich stark dagegen

Klassennamen beginnen mit Großbuchstaben!
 

Lehrlii

Mitglied
danke das mit den klassennamen werden ich mir merken

ich hab mir die fehlermeldung angeschaut und es der output.close() in zeile 103 ist null.

ich hab jz so eingestellt wenn sich das Programm automatisch schließt wenn es keine verbindung aufbauen kann dh. ich hab in zeile 64 system.exit(0); eingefügt
diese lösung finde ich aber nicht zufriedenstellend, ich hätt nämlich gerne, dass das Fenster bestehen bleibt.

ich hab eingestellt dass wenn ich auf x-Drücke, dass das Programm noch eine Nachricht an den Server sendet, das steht bereits im Programmcode in der windowClosing methode, daran liegt es wahrscheinlich auch, dass ich das Programm nicht schließen kann wenn es keine Verbindung aufbauen konnte.
 
S

SlaterB

Gast
wo immer connection/ output usw. benötigt werden kannst du per if schauen ob null und gegebenfalls das nicht tun, was zur Exception führt,
ist nicht der schönste Code, aber wenn du die zusätzliche Funktionalität haben willst, diesen Fall zu berücksichtigen, geht das nicht per Zauberei

natürlich sollte man es vermeiden, derartiges an zig ähnlichen Code-Stellen einzubauen,
dann lieber eine Wrapperklasse drumherum, die die Arbeit in wenigen Methoden konzentriert
 

Lehrlii

Mitglied
ich muss ehrlich zugeben dass ich einsteiger bin und mit hilfe von einem fertigen tutorial diesen chat gebaut habe

eine Frage dann noch: Was meinst du mit einer Wrapperklasse?

und danke das mit den if bedingungen mach ich das jz
 
S

SlaterB

Gast
an 10 Stellen

Java:
if (x == null) {
 hmm
} else {
  x.callY();
}
ist unschön, dann lieber ein sicheres Objekt z erstellen, welches x intern enthält sowie eine Methode callY() und darin das if/else ausführt,
so muss im Hauptprogramm nur noch 10x z.callY() stehen, viel besser

muss auch gar nicht unbedingt eine eigene Klasse sein, eine Methode hilft bereits so wie sendMessage() ja schon besser ist
als mehrfach die ganzen Zeilen mit try/catch zu schreiben

du siehst: du kannst und machst es eh schon, ganz normal, auch ohne komische Begriffe ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W AWT MouseAdapter und WindowAdapter AWT, Swing, JavaFX & SWT 6
K Warum wird der WindowAdapter nicht aufgerufen? AWT, Swing, JavaFX & SWT 2
M Fenstertiteländerung mittels WindowAdapter AWT, Swing, JavaFX & SWT 5
_user_q Objekte vom MainController in anderen Controller verwenden und andersherum (NullPointerException) AWT, Swing, JavaFX & SWT 14
Jose05 Nullpointerexception bei toArray() AWT, Swing, JavaFX & SWT 9
Jose05 NullPointerException bei Beschreiben eines Labels aus einem Array AWT, Swing, JavaFX & SWT 12
J Java FX NullPointerException, ObservableList wird in View nicht angezeigt.. AWT, Swing, JavaFX & SWT 34
N Nur bei einem Textfiled Nullpointerexception bei getText() AWT, Swing, JavaFX & SWT 1
R NullPointerException beim Start des Fensters AWT, Swing, JavaFX & SWT 1
D JavaFX Nullpointerexception wegen TableView AWT, Swing, JavaFX & SWT 2
ZH1896ZH JavaFX kann NullPointerException nicht auflösen... :( AWT, Swing, JavaFX & SWT 3
M NullPointerException / Controller AWT, Swing, JavaFX & SWT 4
R Swing Java9 NullPointerException bei JComboBox AWT, Swing, JavaFX & SWT 13
L java.lang.NullPointerException - Fehlermeldung AWT, Swing, JavaFX & SWT 2
M NullPointerException bei Übergabe eines RadioButtons AWT, Swing, JavaFX & SWT 11
zhermann NullPointerException bei Label.setText() AWT, Swing, JavaFX & SWT 5
it_is_all jLabel.setText -> Char in Str: NullpointerException AWT, Swing, JavaFX & SWT 1
D NullPointerException observableList AWT, Swing, JavaFX & SWT 4
J NullPointerException bei getText() AWT, Swing, JavaFX & SWT 3
S JavaFX NullPointerException bei Versuch ImageView zu ändern AWT, Swing, JavaFX & SWT 1
K JFileChooser NullPointerException AWT, Swing, JavaFX & SWT 7
T Swing NullPointerException beim auslesen von jTextField - Anfänger! AWT, Swing, JavaFX & SWT 3
S Swing [CLOSED] NullPointerException bei BorderLayout() AWT, Swing, JavaFX & SWT 8
G Swing NullPointerException und JXImageView AWT, Swing, JavaFX & SWT 4
L exception in thread awt-eventqueue-0 java.lang.nullpointerexception AWT, Swing, JavaFX & SWT 2
U Swing NullPointerException trotz Referenz auf Textfield & Button AWT, Swing, JavaFX & SWT 6
L NullpointerException und Probleme mit repaint() AWT, Swing, JavaFX & SWT 11
G JavaFX NullPointerException bei Zugriff auf FXML Element AWT, Swing, JavaFX & SWT 0
K JavaFX Pfad öffen NullPointerException AWT, Swing, JavaFX & SWT 4
H SWT NullPointerException bei Zugriff auf Variablen des Hauptfensters AWT, Swing, JavaFX & SWT 6
J JTable verursacht NullPointerException.Ratlos. AWT, Swing, JavaFX & SWT 5
C JButton NullPointerException AWT, Swing, JavaFX & SWT 2
Q getGraphics() - NullPointerException AWT, Swing, JavaFX & SWT 8
C NullPointerException im MVC Muster AWT, Swing, JavaFX & SWT 9
V Nullpointerexception (etwas mit thread und jframe) AWT, Swing, JavaFX & SWT 3
M JTable Drucken NullpointerException +JTable speichern AWT, Swing, JavaFX & SWT 6
T Swing Laden eines Icons auf JButton liefert NullPointerException AWT, Swing, JavaFX & SWT 8
M Exception in thread "Thread-3" java.lang.NullPointerException AWT, Swing, JavaFX & SWT 18
C Swing NullPointerException beim Hinzufügen von Checkboxes in eine ArrayList AWT, Swing, JavaFX & SWT 5
1 JComponent -> java.lang.NullPointerException AWT, Swing, JavaFX & SWT 13
B Swing NullPointerException bei actionPerformed() AWT, Swing, JavaFX & SWT 2
E java.lang.NullPointerException AWT, Swing, JavaFX & SWT 14
R NullPointerException AWT, Swing, JavaFX & SWT 16
xehpuk Swing NullPointerException: Random-Instanz anfangs nicht initialisiert AWT, Swing, JavaFX & SWT 4
3 Swing NullPointerException in AW Event-0? AWT, Swing, JavaFX & SWT 5
C SWT NullPointerException AWT, Swing, JavaFX & SWT 12
J NullPointerException bei Benutzung vom TableCellRenderer AWT, Swing, JavaFX & SWT 3
A AWT Methodenaufruf "AWT-EventQueue-0" java.lang.NullPointerException AWT, Swing, JavaFX & SWT 4
X NullPointerException beim Einfügen einer JMenuBar AWT, Swing, JavaFX & SWT 4
B NullPointerException bei JFrame AWT, Swing, JavaFX & SWT 2
D JPanel / NullPointerException AWT, Swing, JavaFX & SWT 4
G LookAndFeel Dynamisches Einlesen von LookAndFeels - NullPointerException AWT, Swing, JavaFX & SWT 4
E Login wird durch NullPointerException abgebrochen AWT, Swing, JavaFX & SWT 10
K NullPointerException ohne CodeLink AWT, Swing, JavaFX & SWT 6
L NullPointerException JFreeChart AWT, Swing, JavaFX & SWT 10
F NullPointerException - HILFE!! AWT, Swing, JavaFX & SWT 20
martinyyyy AWT Parameter erzeugen NullpointerException obwohl sie vorhanden sind? AWT, Swing, JavaFX & SWT 4
H Swing NullPointerException in JTable bei vielen Einträgen AWT, Swing, JavaFX & SWT 2
S Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException AWT, Swing, JavaFX & SWT 7
S NullPointerException bei JFileChooser AWT, Swing, JavaFX & SWT 8
X JList Probleme mit NullPointerException AWT, Swing, JavaFX & SWT 3
S NullPointerException bei Aufruf von updateUI() beim JFrame AWT, Swing, JavaFX & SWT 12
Z NullPointerException bei SplashScreen AWT, Swing, JavaFX & SWT 5
C NullPointerException bei Doppelpufferung AWT, Swing, JavaFX & SWT 3
F CardLayout.show() -> NullPointerException AWT, Swing, JavaFX & SWT 4
B NullPointerException bei String vergleich AWT, Swing, JavaFX & SWT 5
K NullPointerException bei JTextField AWT, Swing, JavaFX & SWT 8
L Problem mit "NullPointerException" bei grafischer AWT, Swing, JavaFX & SWT 3
D bei Thread in JComponent malen NullPointerException AWT, Swing, JavaFX & SWT 3
loadbrain JTextFields & java.lang.NullPointerException AWT, Swing, JavaFX & SWT 2
F JProgressBar und NullPointerException AWT, Swing, JavaFX & SWT 4
D javax.swing.Timer bringt NullPointerException AWT, Swing, JavaFX & SWT 4
R TextField bringt NullPointerException bei setVisible() AWT, Swing, JavaFX & SWT 12
A NullPointerException in einer JList AWT, Swing, JavaFX & SWT 7
F Fehler: java.lang.NullPointerException AWT, Swing, JavaFX & SWT 2
S Brauche Hilfe mit JFrame - NullPointerException AWT, Swing, JavaFX & SWT 7
A NullPointerException - warum? AWT, Swing, JavaFX & SWT 5
G NullPointerException bei Aufruf von JTabbedPane.getSelectedI AWT, Swing, JavaFX & SWT 7
G Problem mit NullPointerException AWT, Swing, JavaFX & SWT 11
M JTable verursacht NullPointerException AWT, Swing, JavaFX & SWT 8
M NullPointerException AWT, Swing, JavaFX & SWT 3
J NullPointerException bei getSelectedItem AWT, Swing, JavaFX & SWT 10
G Bekomme immer: NullPointerException AWT, Swing, JavaFX & SWT 2
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
berserkerdq2 Wie greife ich auf ein Element zu, welches ich beim Scenebuilder erstellt habe AWT, Swing, JavaFX & SWT 10
H AWT Dialog Größe ändern - Schwarzer Inhalt beim groß ziehen AWT, Swing, JavaFX & SWT 1
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
B Output GUI funktioniert nur beim ersten Mal richtig. AWT, Swing, JavaFX & SWT 4
A JavaFX exportierte Jar ohne beim starten die Libs hinzufügen? AWT, Swing, JavaFX & SWT 2
TheWhiteShadow JavaFX ListView Problem beim Entfernen von Elementen AWT, Swing, JavaFX & SWT 1
S Fehler beim Öffnen weiterer FXML AWT, Swing, JavaFX & SWT 11
I Probleme beim Drucken auf einen PDF-Drucker AWT, Swing, JavaFX & SWT 8
G Gui updated beim zweiten Aufruf nicht mehr AWT, Swing, JavaFX & SWT 15
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2
W Nullpointer Exception beim übertragen von Daten von Scene zu Scene AWT, Swing, JavaFX & SWT 6
missy72 JavaFX Wiederholen einer IF-Abfrage beim erneuten Öffnen einer Stage AWT, Swing, JavaFX & SWT 11
D JavaFX Probleme beim nachtäglichen hinzufügen der jfx dependency AWT, Swing, JavaFX & SWT 7
D JavaFX Label flackert beim aktualisieren AWT, Swing, JavaFX & SWT 12
J Kann mir jemand beim MediaPlayer helfen ? AWT, Swing, JavaFX & SWT 2
S JavaFx Zufallsfarbe beim Button-Klick AWT, Swing, JavaFX & SWT 22

Ähnliche Java Themen

Neue Themen


Oben