Exeption in thread "Thread-2" NullPointerExeption: init methode?

Hey ich bin's wieder und komme mit einem neuen problem...

Wollte mein Game multiplayer spielbar machen doch wenn ich jz das game starte kommt dieser fehler:
Code:
Exception in thread "Thread-2" java.lang.NullPointerException
    at de.markus.rpg.Main.init(Main.java:70)
    at de.markus.rpg.Main.run(Main.java:102)
    at java.lang.Thread.run(Thread.java:748)

Die init Methode:
Code:
public void init() {
        menu = new Menu();
        bg = new Background();
        options = new Options();
        pause = new Pause();
        client.sendData("ping".getBytes());
    }
hab ich hier aufgerufen:
Code:
public void run() {
        init();
       
        while(running) {
            ...
        }
    }
Die sendData Methode sieht so aus:
Code:
public void sendData(byte[] data) {
        DatagramPacket packet = new DatagramPacket(data, data.length, ipAddress, 1331);
        try {
            socket.send(packet);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

Ich habe keine Idee mehr woran es liegt :[

Markus
 
@VfL_Freak ja genau bei
Java:
client.sendData("ping".getBytes());
@fhoffmann hier:
Java:
public synchronized void start() {
        running = true;
        new Thread(this).start();
   
        if(JOptionPane.showConfirmDialog(this, "Do you want to run a server?") == 0) {
            server = new GameServer(this);
            server.start();
        }
   
        GameClient client = new GameClient(this, "localhost");
        client.start();
    }
Weiß aber trotzdem nicht weiter ...
 
Zuletzt bearbeitet:

fhoffmann

Top Contributor
Java:
GameClient client = new GameClient(this, "localhost");
Hier legst du eine lokale (!) Variable client an. Diese existiert nur in der Methode start(); sie hat nichts mit dem Member der Klasse zu tun. Dieses Member ist weiterhin NULL.
 
@fhoffmann ok ich habe das jetzt so gemacht
Java:
public class Main extends Canvas implemnts Runnable{
private GameClient client;
...
public synchronized void start() {
        running = true;
        new Thread(this).start();
 
        if(JOptionPane.showConfirmDialog(this, "Do you want to run a server?") == 0) {
            server = new GameServer(this);
            server.start();
        }
 
        client = new GameClient(this, "localhost");
        client.start();
    }
}
funktioniert aber trotzdem nicht ...
 

Robat

Top Contributor
Dein Problem ist ganz einfach das du in deiner Methode start() erst deine init() Methode aufrufst (in der du client verwendest) und danach erst client initialisierst.

Denk immer daran, dass Code in der Reihenfolge abgearbeitet wird, wie du ihn schreibst ;)
 

Robat

Top Contributor
new Thread().start() sorgt doch dafür, dass der Code in der run Methode ausgeführt wird. Dort rufst du init auf aber erst am Ende der start Methode initialisiert du client.
 
brauch doch nochmal hilfe und zwar will ich das man auswählen kann ob man einen Server starten will oder nicht aber imm hintergrund laufen die sachen weiter also warten nicht auf meine antwort in dem confirmdialog kann ich das irgendwie machen?
 
Also ich mache eine showConfirmDialog option wo ich frage ob man einen Server machen will oder nicht da aber im hintergrund das programm weiter läuft wird, auch wenn man einen server machen will also auf ja klickt, schon davor eine nachricht gesendet, bei mir ping worauf der server mit pong reagieren soll. Aber da das ping so schnell abgeschickt wird kommt, auch wenn man einen server machen will, kein pong also muss man das programm pausieren bis der spieler entschieden hat ob man einen Server starten will oder nicht ... ist bisschen schwer zu beschreiben :confused:
 

Robat

Top Contributor
Dann zeig bitte noch mal deinen Code dazu (der Link ist abgelaufen).
Prinzipiell sind die Dinger nämlich von Haus aus blockierend. (wenn ich mich nicht irre)
 

Robat

Top Contributor
Momentan startest du ja den Client schon vor der Abfrage.
Lass den Dialog doch vor dem Start anzeigen und starte danach client + eventuell Server.
 
Du meinst so?
Java:
public synchronized void start() {
        running = true;
        new Thread(this).start();
      
      
      
      
        if(JOptionPane.showConfirmDialog(this, "Do you want to run a server?") == 0) {
            server = new GameServer(this);
            server.start();
        }
      
        client = new GameClient(this, "localhost");
        client.start();
    }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Minecraft PlayerBot (Listener Thread für jeden Spieler?) Spiele- und Multimedia-Programmierung 3
O Thread pausieren und wieder starten Spiele- und Multimedia-Programmierung 2
kaoZ Animation in eigenen Thread auslagern..... Spiele- und Multimedia-Programmierung 1
gamebreiti Daemon Thread Spiele- und Multimedia-Programmierung 4
M Point & Click Thread Probleme Spiele- und Multimedia-Programmierung 20
N JPanel Inhalt aktualisiert nach Thread.sleep nicht Spiele- und Multimedia-Programmierung 2
S Thread und jpanel-paintcomponent kombinierbar?? Spiele- und Multimedia-Programmierung 14
Kenan89 Alternative zu Thread Runnable Spiele- und Multimedia-Programmierung 2
O Universe <- show Thread Spiele- und Multimedia-Programmierung 14
Y Warum Thread für Spieleprogrammierung? Spiele- und Multimedia-Programmierung 27
C ***** bitte thread löschen *** Spiele- und Multimedia-Programmierung 3
A KeyListener - Thread Problem Spiele- und Multimedia-Programmierung 2
D Snake n+1-Thread Spiele- und Multimedia-Programmierung 2
B Applet startet, aber führt den Thread nicht aus Spiele- und Multimedia-Programmierung 7
S Ein Thread für alle Animationen oder mehrere? Spiele- und Multimedia-Programmierung 2
G Thread startet nicht im Vollbild modus Spiele- und Multimedia-Programmierung 3
E TetrisApplet Thread Hilfe Spiele- und Multimedia-Programmierung 6
Developer_X Thread in Java3D Spiele- und Multimedia-Programmierung 8
D Methode in eigenem Thread auslagern Spiele- und Multimedia-Programmierung 9
S Probleme mit Thread beim Streaming Spiele- und Multimedia-Programmierung 1
F Problem mit Thread.sleep() Spiele- und Multimedia-Programmierung 7
Tapsi Thread wartet auf Threads Spiele- und Multimedia-Programmierung 7
M Thread.sleep() problem Spiele- und Multimedia-Programmierung 10
0 Workaround für Thread.sleep()-Bug Spiele- und Multimedia-Programmierung 15
M Roundbased - Thread anhalten Spiele- und Multimedia-Programmierung 8
D Wasserstrahl animieren: ein Thread je Tropfen? Spiele- und Multimedia-Programmierung 7
S Thread unterbrechen Spiele- und Multimedia-Programmierung 3

Ähnliche Java Themen

Neue Themen


Oben