NullPointerException, aber warum?

  • Themenstarter Gelöschtes Mitglied 12486
  • Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gelöschtes Mitglied 12486

Gast
Ich habe ein Applet mit Socketverbindung zu einem Server geschrieben. Nun habe ich das Problem, dass bei bestimmten Funktionen eine NullPointerException geworfen wird, wenn ich aus dem InputStream etwas einlese.

Die Verbindungen zum Server wird bei mir in eine Klasse gespeichert, hier die run() methode:

Code:
public void run() {
		while(true){
			try{
				if(in!=null && quit == false){
					String str = in.readLine();
					System.out.println(str);
					GameApplet.parseCommand(str);
				}else{
					break;
				}
			}catch(IOException e){
				System.out.println("*** Error reading Data from Server ***");
				disconnectFromServer();
			}
		}
		System.out.println("*** Error reading Data from Server ***");
	}

Die hier genutzte parseCommand() Methode sieht so aus.


Code:
public void parseCommand(String command){
		if(!command.equals("<pong>"))
			System.out.println("in from Server: "+command);
		if(command.startsWith("<list>")){
			lobbyPanel.setContactList(command);
		}
...

Ich erhalten nun ab und zu eine NullPointerException, nachdem in der run() methode der String eingelesen wurde und an die parseCommand() übergeben wurde. Ich kann direkt vor der Übergabe den String per System.out.println() ausgeben und es ist kein null-objekt. Wenn jedoch dann direkt danach die Übergabe passiert, dann wirft meine parseCommand() MEthode eine NullPointerException, weil angeblich ein null-Objekt übergeben wurde, an eben genau dieser Stelle...


Hat dazu jemand eine Idee?!
 
S

SlaterB

Gast
meine Idee ist, dass du etwas falsch machst,

schreibe

Code:
public void parseCommand(String command){ 
    if (command == null) {
      System.out.println("command war null"); 
      return;
   } 
      if(!command.equals("<pong>")) 
         System.out.println("in from Server: "+command); 
      if(command.startsWith("<list>")){ 
         lobbyPanel.setContactList(command); 
      }
und du bekommst keine Exception mehr, wozu braucht man da eine Idee?
 
G

Gelöschtes Mitglied 12486

Gast
das würde zwar die exception verhindern, jedoch ändert es doch nichts daran, dass dort ein null objekt auftaucht wo keins sein sollte oder?
 

lhein

Top Contributor
Wenn das readLine null liefert, dann solltest Du in Erwägung ziehen, daß die Socket-Verbindung geschlossen wurde bzw. Du das Ende des Streams erreicht hast.
Diesen Fall sollte man auch abfangen.

lr
 
S

SlaterB

Gast
nun gut, du hattest vorhin ja wirklich schon
System.out.println(str);
drin, dachte du würdest über irgendwelche Möglichkeiten sprechen,

aber wie siehst nun aus, wirkt diese Abfrage oder nicht?

--------

vielleicht hast du deine Ausgabe nur falsch gelesen,
Ssytem.out und System.err werden gerne mal in falscher Reihenfolge oder gar verzahnt ausgegeben,
wenn du ganz sicher sein willst:
führe eine Exemplarvariable count ein und schreibe

String str = in.readLine();
count++;
System.out.println("Vorausgabe "+count+": "+str);
GameApplet.parseCommand(str);

+

public void parseCommand(String command){
if (command == null) {
System.out.println("command war null bei count = "+count);
// return; kein return, soll ruhig zur Exception kommen
}
try {
........
} catch(NullPointerException e) {
System.out.println("NullPointerException bei count = "+count);
throw e;
}



und dann schaue ganz genau nach welche Nachrichten zu welchem Zeitpunkt kommen,
 
G

Gelöschtes Mitglied 12486

Gast
ich habe es so umgesetzt wie du es vorgeschlagen hast, jedoch hilft mir das nicht weiter.

Ich habe nun folgendes in der Console stehen:

Exception in thread "Thread-5" java.lang.NullPointerException
at GameApplet.parseCommand(GameApplet.java:123)
at ClientThread.run(ClientThread.java:35)
out to Server: <startgame>2
Vorausgabe: 10: null
command war null bei count = 10
NullPointerException bei count = 10

Das heisst, dass der inputstream an dieser stelle tatsächlich ein null-objekt einliest oder? dann bleibt die frage, woher kommt dieses? Wenn ein Outputstream ein Null-objekt schreiben soll, dann wirft der doch auch eine Exception oder? d.h es kann ja nicht aus Versehen vom Server kommen...
 
S

SlaterB

Gast
> jedoch hilft mir da nicht weiter

na hilft doch schon mal entscheidend weiter, das mysteriöse 'null owohl String nicht null war' zu entschärfen,

so, du liest in einer Endlosschleife Zeilen vom Server,
was soll denn passieren wenn der Server nichts mehr zu senden hat?
dann kommt eben null als Ausgabe,

ich weiß jetzt nicht genau, ob das nur dann passiert, wenn die Connection aufgelöst/ geschlossen wird,
wenn die Connection noch offen ist, kann es auch sein, dass so ein read-Aufruf wartet, bis wieder Daten da sind?
kannst du alles testen
 

lhein

Top Contributor
kleiner Auszug aus der API Doku:

public String readLine()
throws IOException

Read a line of text. A line is considered to be terminated by any one of a line feed ('\n'), a carriage return ('\r'), or a carriage return followed immediately by a linefeed.

Returns:
A String containing the contents of the line, not including any line-termination characters, or null if the end of the stream has been reached
Throws:
IOException - If an I/O error occurs
 
G

Gelöschtes Mitglied 12486

Gast
*edit*


hmm ich teste dann mal noch was... danke für den denkanstoss! mal schauen obs klappt...
 
G

Gelöschtes Mitglied 12486

Gast
Das oben beschriebene Problem taucht bei mir 2 mal im Programm auf. Einmal auf der Clientseite, einmal auf der Serverseite. Die Clientseite hab ich nun anscheinend geregelt, da war ein denkfehler drin. Anstatt zu prüfen ob der eingelesene String = null ist habe ich dort immer geprüft ob der BufferedReader = null ist. Was hier quatsch war.

run() des Clients:
Code:
public void run() {
		while(true){
			try{
				if(quit == false){
					String str = in.readLine();
					if(str != null){
					count++;
					Calendar cal = Calendar.getInstance();
					SimpleDateFormat formater = new SimpleDateFormat("mm:ss:SSS");
					String time = formater.format(cal.getTime());
					System.out.println(time+" Ausgabe: "+count+": "+str);
					GameApplet.parseCommand(str);
					}
				}else{
					break;
				}
			}catch(IOException e){
				System.out.println("*** Error reading Data from Server ***");
				disconnectFromServer();
			}
		}
		System.out.println("*** Error reading Data from Server ***");
	}

Auf der Serverseite habe ich dann geschaut, ob ich dies auch implementiert hatte.

Code:
public void run(){
		String line="";
		try {
			while(true) {
					Calendar cal = Calendar.getInstance();
					SimpleDateFormat formater = new SimpleDateFormat("mm:ss:SSS");
					String time = formater.format(cal.getTime());
				line=in.readLine();
				System.out.println(time+" Ausgabe: "+count+": "+line);
				if(line!=null){
					count++;
					pongServer.parseCommand(line,myid);
				}
				Thread.sleep(10);
			}
		} 
		catch (Exception e){
			e.printStackTrace();
			try{ 
				clientSocket.close();
			}
			catch(Exception e2){
				System.err.println(e2);
			}
			System.err.println(e);
		}
	}

Hier steht ja auch diese if-Abfrage. Dennoch bekomme ich eine NullPointerException.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Input/Output NullPointerException, aber wieso? [Apache POI] Allgemeine Java-Themen 11
B NullPointerException - Aber kein Fehler im Code Allgemeine Java-Themen 4
F NullPointerException aber warum ? Allgemeine Java-Themen 9
Zeppi NullPointerException in einer if-Abfrage Allgemeine Java-Themen 6
T imagej-server NullPointerException Allgemeine Java-Themen 1
L Methoden NullpointerException Allgemeine Java-Themen 5
B OOP Auslöser für NullPointerException Allgemeine Java-Themen 3
I Vererbung Nicht erklärliche NullPointerException Allgemeine Java-Themen 7
Drachenbauer warum bekomme ich hier eine NullPointerException Allgemeine Java-Themen 6
I Array Parameter mit 2 Klassen - NullPointerException Allgemeine Java-Themen 3
S Exception in thread "main" java.lang.NullPointerException at FamilienApp.main(FamilienApp.java:15) Allgemeine Java-Themen 1
S Methoden Problem mit NullPointerException Allgemeine Java-Themen 9
F Input/Output NullPointerException with Apache POI Allgemeine Java-Themen 7
P wiedermal NullPointerException Allgemeine Java-Themen 2
kodela NullPointerException Allgemeine Java-Themen 2
L Variablen NullPointerException (RSA) Allgemeine Java-Themen 2
B NullPointerException bei @Inject JSF Allgemeine Java-Themen 0
Arif Probleme mit NullPointerException Allgemeine Java-Themen 2
G String an Arduino senden NullPointerException in PrintWriter Allgemeine Java-Themen 6
Z NullPointerException beim Schreiben einer ArrayList in eine Datei Allgemeine Java-Themen 6
R NullPointerException Ohne Grund Allgemeine Java-Themen 5
D ByteBuffer getInt NullpointerException Allgemeine Java-Themen 4
S JavaMail - MailSubject,MailFrom,MailDate in String Array speichern NullPointerException Allgemeine Java-Themen 2
T Compiler-Fehler NullpointerException! Allgemeine Java-Themen 7
A Methode ergibt Java NullpointerException. Allgemeine Java-Themen 3
F Socket NullPointerException Bitte um hilfe! Allgemeine Java-Themen 12
L NullPointerException bei Instanzvarialen Allgemeine Java-Themen 3
B Compiler-Fehler NullPointerException beim Auslesen von .lang-Datei Allgemeine Java-Themen 3
I Fehler java.lang.NullPointerException Allgemeine Java-Themen 5
H java.lang.NullPointerException Allgemeine Java-Themen 5
L Interpreter-Fehler java.lang.NullPointerException Allgemeine Java-Themen 17
M JSON NullPointerException Allgemeine Java-Themen 5
M NullpointerException Allgemeine Java-Themen 2
L Eclipse NullPointerException Allgemeine Java-Themen 6
M Fitness-Rechner: NullPointerException Allgemeine Java-Themen 7
G Thread erzeugt nicht plausible NullPointerException Allgemeine Java-Themen 7
A java.lang.NullPointerException bei Schleife Allgemeine Java-Themen 3
K Unerklärliche nullpointerexception Allgemeine Java-Themen 6
C Was bekomme ich eine Nullpointerexception? (Apache POI) Allgemeine Java-Themen 3
S javadoc java.lang.NullPointerException Allgemeine Java-Themen 2
K 3Dimensionales Feld - NullPointerException Allgemeine Java-Themen 2
J Compiler-Fehler NullPointerException Allgemeine Java-Themen 12
T Compiler-Fehler NullPointerException bei ADT LinkedTree Allgemeine Java-Themen 31
P Beim sortieren nullpointerexception Allgemeine Java-Themen 12
3 MP3-Finder wirft NullPointerException Allgemeine Java-Themen 13
M NullPointerException MenuItem Allgemeine Java-Themen 7
S Dialog einblenden bei NullPointerException Allgemeine Java-Themen 5
T DefaultTableModel NullPointerException Allgemeine Java-Themen 7
ruutaiokwu NullPointerException auf member, die per konstruktor gesetzt wird (multithread-kontext) Allgemeine Java-Themen 2
B NullPointerException ohne Angabe Allgemeine Java-Themen 5
F Array NullPointerException Allgemeine Java-Themen 26
B NullPointerException bei Wertzuweisung Allgemeine Java-Themen 3
C NullPointerException Allgemeine Java-Themen 9
MonsterBit java.lang.NullPointerException Allgemeine Java-Themen 2
O NullPointerException (wohl Denkfehler) Allgemeine Java-Themen 5
N Warum nullPointerException? Allgemeine Java-Themen 13
N Generics-NullpointerException Allgemeine Java-Themen 7
J NullPointerException mit HashMap Allgemeine Java-Themen 2
B NullPointerException bei new XStream() Allgemeine Java-Themen 2
J java.lang.NullPointerException bei Threadprogrammierung Allgemeine Java-Themen 9
J NullPointerException bei JasperReports Allgemeine Java-Themen 2
V NullPointerException bei Vector Allgemeine Java-Themen 2
G Warum kommt hier NullPointerException? Allgemeine Java-Themen 3
G NullPointerException Allgemeine Java-Themen 5
R Immer wieder NullPointerException Allgemeine Java-Themen 2
M NullPointerException Allgemeine Java-Themen 4
J Fehler: java.lang.NullPointerException Allgemeine Java-Themen 2
G NullPointerException problem Allgemeine Java-Themen 30
mhauert NullPointerException bei Zugriff auf JNI Objekt Allgemeine Java-Themen 6
J Folgender Fehler: java.lang.NullPointerException Allgemeine Java-Themen 4
T NullPointerException nach Java Update Allgemeine Java-Themen 4
G NullPointerException Allgemeine Java-Themen 6
H NullPointerException trotz Abfangen von null? Allgemeine Java-Themen 9
H nullPointerException bei [ArrayList<String>.add(.)] Allgemeine Java-Themen 3
H NullPointerException Allgemeine Java-Themen 10
P NullPointerException Allgemeine Java-Themen 8
A NullPointerException, Thread soll Thread steuern Allgemeine Java-Themen 2
MQue Sichtbarkeit/HashMap/NullPointerexception Allgemeine Java-Themen 2
MQue NullPointerException Allgemeine Java-Themen 17
A NullPointerException Allgemeine Java-Themen 15
G java.lang.NullPointerException JFreeChart Allgemeine Java-Themen 5
A NullPointerException Allgemeine Java-Themen 11
G Methode mit Schleifen NullPointerException Allgemeine Java-Themen 2
B Pobleme mit NullpointerException Allgemeine Java-Themen 13
M java.lang.NullPointerException im Chatclient Allgemeine Java-Themen 12
S NullPointerException beim Laden von BMPs Allgemeine Java-Themen 3
B java.lang.NullPointerException Allgemeine Java-Themen 11
M NullPointerException bei Subklasse ohne MediaTracker Allgemeine Java-Themen 12
G Problem mit NullPointerException Allgemeine Java-Themen 5
D NullPointerException wo keine sein sollte. Allgemeine Java-Themen 2
F NullpointerException beim Einlesen einer Datei Allgemeine Java-Themen 13
V Button schließen - NullPointerException Allgemeine Java-Themen 6
V NullPointerException Allgemeine Java-Themen 12
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
8u3631984 Strukturiertes Logging : Jedes Feld in eine seperate Zeile - aber wie ? Allgemeine Java-Themen 2
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
N JAVA-Code mit Grafikfenster zeichnet in Windows, aber nicht Mac. Allgemeine Java-Themen 4
M Klasse durch Klassen Aufteilung verbessern, aber wo? Allgemeine Java-Themen 1
Thallius Zeitzone zu einem LocalDate hinzufügen aber ohne es zu ändern... Allgemeine Java-Themen 2
L Kursverlauf vorhersagen mit Deeplearning4j, aber komischer Knick am Anfang der Vorhersage Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben