NullPointer Exception

philS

Neues Mitglied
Hallo zusammen,

das ist dann wohl mein erster Thread / Beitrag hier ;-)

Ich fange gerade mit JAVA an. Komme ursprünglich von PHP. Ich fange also nicht ganz bei Null an und habe schon Vorkenntnisse.

Also zu meinem Problem / Frage. Ich würde gerne zu Übungszwecken eine kleine Server / Client Anwendung machen und stoße da auf Fehler.
Ich habe eine Klasse, die den Server bereitstellt. ( Normaler ServerSocket wartet auf eingehende Verbindungen )
Eine Andere ist der "Client". Generell klappt auch alles, wenn ich in der Clientklasse selber Daten abschicke kommt auch alles korrekt zurück.
Da das ganze aber mit einer GUI versehen werden soll kommt hier ein Fehler.

Ich rufe also aus einer anderen Klassen den Client auf und verbinde mich mit dem Server (Klappt)
Ich starte die Clientklasse in einem eigenen Thread. ( Klappt )
Wenn ich dann aber von meiner GUI-Klasse aus eine Nachricht schreiben will, bekomme ich immer eine NullPointer Exception. Ich habe schon den halben Tag gesucht woran es liegen könnte. Vielleicht kann mir ja jemand einen Tipp geben :)

Code "Client"

Java:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class Arbeiter implements Runnable {

	public BufferedWriter writer;
	
	public void schreibeNachricht() throws IOException {
		writer.write("Test\n");
		writer.flush();
	}
	
	@Override
	public void run() {
		try {
			// SOCKET VERBINDEN
			Socket client = new Socket("localhost", 1234);
			
			// INPUTSTREAM
			InputStream in = client.getInputStream();
			BufferedReader reader = new BufferedReader(new InputStreamReader(in));
			
			// OUTPUTSTREAM
			OutputStream out = client.getOutputStream();
			writer = new BufferedWriter(new OutputStreamWriter(out));

			// RUN
			String s = null;
			while((s = reader.readLine()) != null) {
				System.out.println(s);
			}
			
			// CLOSE
			writer.close();
			reader.close();
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

Code "GUI-Klasse"

Java:
import java.io.IOException;

public class ThreadTest {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		Arbeiter test = new Arbeiter();
		Thread erster = new Thread(test);
		erster.start();
		test.schreibeNachricht();
		
	}

}

Der Fehler:

Java:
Exception in thread "main" java.lang.NullPointerException
	at worker.Arbeiter.schreibeNachricht(Arbeiter.java:18)
	at worker.ThreadTest.main(ThreadTest.java:17)
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
schreibeNachricht() greift auf writer zu, warum sollte das deiner Meinung nach nicht null sein?
weil es in der run-Methode gesetzt wird?
das läuft doch aber extra nebenläufig in einem Thread ab, du kannst doch gar nicht wissen, wann das zeitlich bereit ist,

versuche mal Thread.sleep(1000) in der main-Methode dazwischen, warte eine Sekunde
 

ESCS

Mitglied
Nachdem du erster.start(); aufgerufen hast wird die run() Methode von Arbeiter parallel (mehr oder weniger) zum restlichen Code ausgeführt. Daher ist der BufferedWriter in der Klasse Arbeiter zum Zeitpunkt des Aufrufes von schreibeNachricht() noch nicht initialisiert.
 

philS

Neues Mitglied
Danke für die Antwort! Hat geklappt!
Ist das so auch der normale Weg wenn man mit Threads arbeitet? Den Thread kurz sleepen?
 

Volvagia

Top Contributor
Ne. Der Socket wird von einen Thread (besser nicht EDT, was zu Verzögerungen in GUI etc führen kann) aufgebaut, bevor überhaupt versucht wird zu senden. Oder Arbeiter enthält eine Collection die die Strings zwischenspeichert und absendet sobald eine Verbindung besteht. Macht aber eher nur Sinn, wenn Verbindungen oft ab- und wieder aufgebaut werden. Oder der eine Thread wird blockiert, sofern derzeit kein avaibler Writer existiert. Darauf würde ich aber ebenfalls verzichten, jede Blockierung enthält entfernt eine Möglichkeit auf Dead Lock.
 
Zuletzt bearbeitet:

ESCS

Mitglied
Du konstruierst einfach eine neue Klasse, die das Verbinden zum Socket etc übernimmt, aber nicht in einem Thread gestartet wird.
Nur das Lesen muss i.d.R. in einem eigenen Thread abgewickelt werden.
 

irgendjemand

Top Contributor
Du konstruierst einfach eine neue Klasse, die das Verbinden zum Socket etc übernimmt, aber nicht in einem Thread gestartet wird.
Nur das Lesen muss i.d.R. in einem eigenen Thread abgewickelt werden.

I/O-ops sollten grundsätzlich in einen eigenen Thread ausgelagert werden ... dazu gehört auch das schreiben auf einen socket ... da niemand weis wie viel zeit dies in anspruch nimmt ... *wenn man z.b. ein paar MB schreiben will ... zusätzlich noch verschlüsselt ... da kommt schon mal etwas zusammen was die GUI freezed ...

read() wird desshalb extra behandelt da read() in der regel blockiert *sofern man nicht mit NIO/AIO arbeitet* ... und es einem da halt sofort ins auge fällt ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
B EJB und Arquillian - bekomme Nullpointer Exception beim Aufruf der EJB Klasse Java Basics - Anfänger-Themen 40
D Warum die Nullpointer Exception Java Basics - Anfänger-Themen 6
F Referenz an ein Objekt in einer anderen Klasse erstellen(Nullpointer exception) Java Basics - Anfänger-Themen 6
N Nullpointer exception Java Basics - Anfänger-Themen 4
D Erste Schritte Java.lang.NullPointer.Exception Java Basics - Anfänger-Themen 8
Z Getter/Setter NullPointer Exception Java Basics - Anfänger-Themen 6
W Nullpointer Exception bei .add(...) Java Basics - Anfänger-Themen 6
F Operatoren Wieso fliegt hier eine NullPointer Exception :( Java Basics - Anfänger-Themen 3
F nullpointer exception - arrayerstellung Java Basics - Anfänger-Themen 4
R indexOf wirft NullPointer Exception Java Basics - Anfänger-Themen 2
H Nullpointer Exception Java Basics - Anfänger-Themen 8
C Erste Schritte GUI - ActionListener - Exception Nullpointer Java Basics - Anfänger-Themen 5
C Java Nullpointer Exception in 2D-Spiel Snake Java Basics - Anfänger-Themen 8
N NullPointer Exception bei setSource (Audioplayer mit JMF) Java Basics - Anfänger-Themen 6
J Methoden in externer Klasse -> Nullpointer Exception Java Basics - Anfänger-Themen 9
J Nullpointer Exception - Warum? Java Basics - Anfänger-Themen 9
K zufallszahlen in Array Speichern = Nullpointer exception Java Basics - Anfänger-Themen 24
D Nullpointer Exception Java Basics - Anfänger-Themen 2
Developer_X NullPointer Exception ohne Sinn Java Basics - Anfänger-Themen 19
MEETyA NullPointer Exception - Sudoku Java Basics - Anfänger-Themen 2
D Nullpointer exception bei: if( (rc.getTower != null) ) {..} Java Basics - Anfänger-Themen 2
G Problem mit Nullpointer Exception Java Basics - Anfänger-Themen 2
K Nullpointer Exception? Was tun? Java Basics - Anfänger-Themen 7
R Wieder mal ne NullPointer Exception. Java Basics - Anfänger-Themen 8
D nullpointer exception Java Basics - Anfänger-Themen 12
D Problem mit Vector / Nullpointer Exception Java Basics - Anfänger-Themen 3
S Nullpointer Exception bei Point2D Java Basics - Anfänger-Themen 2
8 JLayer Nullpointer Exception Java Basics - Anfänger-Themen 6
megachucky kleines problem mit einer nullpointer exception Java Basics - Anfänger-Themen 2
M Nullpointer beim befüllen meiner Liste im Object Java Basics - Anfänger-Themen 3
Dimax BufferedReader.readLine().length() wirft NullPointer Java Basics - Anfänger-Themen 6
AlexG. Nullpointer Exeption Java Basics - Anfänger-Themen 46
AlexG. Nullpointer exeption Fehler Java Basics - Anfänger-Themen 0
J Nullpointer aber wo? Java Basics - Anfänger-Themen 12
B OOP Über einen AVL-Baum iterieren (NullPointer) Java Basics - Anfänger-Themen 5
K Nullpointer beim Erstellen eines Imageicons Java Basics - Anfänger-Themen 2
O Perfomance: Arraylist absichtlich zum Nullpointer schicken... Java Basics - Anfänger-Themen 16
S Iterator next() Nullpointer Java Basics - Anfänger-Themen 2
W Nullpointer bei Objekt Serialisierung mit ArrayList<byte[]> etc. Java Basics - Anfänger-Themen 2
Q CardLayout und NullPointer Java Basics - Anfänger-Themen 3
R NullPointer Exceptions Java Basics - Anfänger-Themen 3
P ArrayList Nullpointer? Java Basics - Anfänger-Themen 4
M TextField Nullpointer Exc Java Basics - Anfänger-Themen 8
I Array - Nullpointer Ausnahme Java Basics - Anfänger-Themen 2
J NullPointer bei ArrayList.add Java Basics - Anfänger-Themen 6
C NullPointer Java Basics - Anfänger-Themen 3
D NullPointer bei ActionCommand in Array Java Basics - Anfänger-Themen 2
D Dubioser Nullpointer Java Basics - Anfänger-Themen 5
M Java3D TransformChanged nullpointer ??? Java Basics - Anfänger-Themen 2
X Nullpointer Fehler Java Basics - Anfänger-Themen 3
R Probleme mit NullPointer beim Mp3 abspielen (JMF) Java Basics - Anfänger-Themen 21
Antoras Nullpointer bei Wertübergabe Java Basics - Anfänger-Themen 10
Antoras Swing repaint und Nullpointer Java Basics - Anfänger-Themen 6
G NullPointer bei if anweisung Java Basics - Anfänger-Themen 14
Antoras NullPointer und Swing-Problem Java Basics - Anfänger-Themen 2
G (csv)Datei lesen FindBug findet mgl. NullPointer - wie lösen Java Basics - Anfänger-Themen 3
A g=panel.getGraphics() im Thread => Nullpointer Java Basics - Anfänger-Themen 9
T KeyListener, Nullpointer und eine unbekannte Variable Java Basics - Anfänger-Themen 6
E Fehler NullPointer beim Ausführen Java Basics - Anfänger-Themen 4
E nullpointer bei BufferedImage Java Basics - Anfänger-Themen 2
S Arrays und Nullpointer Java Basics - Anfänger-Themen 6
B NullPointer... Java Basics - Anfänger-Themen 6
I Exception wird gefangen, aber trotzdem in Error Log? Java Basics - Anfänger-Themen 10
W Null-Pointer Exception beim Programmstart Java Basics - Anfänger-Themen 8
Ostkreuz String Exception Java Basics - Anfänger-Themen 8
Fiedelbambu Exception in Application constructor Java Basics - Anfänger-Themen 3
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
F abbruch Exception lässt sich nicht erstellen Java Basics - Anfänger-Themen 2
F Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11 at main.main(main.java:11) Java Basics - Anfänger-Themen 2
M Exception in thread "main" java.util.NoSuchElementException Java Basics - Anfänger-Themen 2
N Exception beim Verwenden von Arraylist? Java Basics - Anfänger-Themen 10
B Compiler-Fehler Fehlermeldung Exception in thread, falsche Eingabewert Java Basics - Anfänger-Themen 2
S JavaKara Null Exception Error Java Basics - Anfänger-Themen 4
T Eigene Exception - ohne werfen abfangen Java Basics - Anfänger-Themen 2
LiFunk Exception: es dürfen nur Nummern eingelesen werden Java Basics - Anfänger-Themen 6
low_in_the_head Eigene Exception nutzen Java Basics - Anfänger-Themen 4
1 Exception Java Basics - Anfänger-Themen 2
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
I JAX-RS Exception Handling Java Basics - Anfänger-Themen 4
L Meine erste eigene Exception Klasse Java Basics - Anfänger-Themen 10
J null exception Array Java Basics - Anfänger-Themen 5
H Frage zu Throw Exception Java Basics - Anfänger-Themen 2
O Exception in thread "main" java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 4
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
C Exception-Frage Java Basics - Anfänger-Themen 3
B Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException Java Basics - Anfänger-Themen 8
I Exception bei Button mit wait() und notifyAll() Java Basics - Anfänger-Themen 3
N Wie teste ich eine geworfene Exception? Java Basics - Anfänger-Themen 8
R Methoden ArrayList clonen wirft exception Java Basics - Anfänger-Themen 3
D Scanner- Exception NoSuchElementException Java Basics - Anfänger-Themen 2
N Exception werfen bei falscher Datumseingabe Java Basics - Anfänger-Themen 14
A Exception handeling mit finally und objektreferenzen Java Basics - Anfänger-Themen 6
D Frage zu Strings einer Exception Java Basics - Anfänger-Themen 4
S Exception Java Basics - Anfänger-Themen 2
J Exception-Aufgabe Java Basics - Anfänger-Themen 8
S Verwenden von throw Exception an der Funktion Java Basics - Anfänger-Themen 2
R Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
Z Fragen zu Exception (Throws/throw) Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben