Avatar billede Sjap_ Nybegynder
02. oktober 2010 - 14:46 Der er 18 kommentarer og
1 løsning

java.lang.NullPointerException i GUI

Hej javafolk,

Jeg er nybegynder i java.. Jeg har udviklet en mindre tcp lister som lytter på en port og udfører noget. Det virker helt fint når jeg starter den i main(), men når jeg forsøger at starte min tcp server fra min GUI så kommer den med: java.lang.NullPointerException når jeg trykker på OK i min GUI.

Og jeg ved ikke helt hvor fejlen kan ligge.. Så jeg håber i kan give mig noget input til hvor den kan ligge?

http://pastebin.com/DP9VTW3f
http://pastebin.com/FMSKCr6B
Avatar billede arne_v Ekspert
02. oktober 2010 - 16:45 #1
Der er noget galt her.

En tråd klasse skal implementere run og man kalder start ikke omvendt.
Avatar billede arne_v Ekspert
02. oktober 2010 - 16:46 #2
Det vil hjælpe fejlsøgningen lidt hvis du fortalte hvor fejlen opstod.
Avatar billede arne_v Ekspert
02. oktober 2010 - 16:46 #3
PS: Klasse navne bør starte med stort.
Avatar billede Sjap_ Nybegynder
02. oktober 2010 - 17:47 #4
Hej Arne,

Jeg får denne her fejl når jeg trykker på OK.

Exception in thread "gui" java.lang.NullPointerException
    at chatServer.run(Main.java:102)
    at java.lang.Thread.run(Thread.java:619)
Avatar billede arne_v Ekspert
02. oktober 2010 - 17:53 #5
Hm. I pastebin koden er Main.java linie 102 en blank linie ????
Avatar billede Sjap_ Nybegynder
02. oktober 2010 - 18:50 #6
hmm.. Underligt..
Jeg har lige opdateret koden..

Exception in thread "gui" java.lang.NullPointerException
    at chatServer.run(Main.java:86)
    at java.lang.Thread.run(Thread.java:619)

Så nu passer den bedre..
Avatar billede arne_v Ekspert
02. oktober 2010 - 19:00 #7
Linie 86 er stadig en blank linie.

Men hvis vi antager at det er en af de forreige linier:

    public void bootServer(Socket forbin) {
        this.forbin1 = forbin;
        this.ip = forbin1.getInetAddress().toString().replaceAll("[/]", "");
  }

    public void run() {
        try {
            PrintWriter ud = new PrintWriter(forbin1.getOutputStream());
            BufferedReader ind = new BufferedReader( new InputStreamReader(forbin1.getInputStream()));

så må p0roblemet vel være at forbin1 er null fordi bootServer ikke er blevet kaldt.
Avatar billede Sjap_ Nybegynder
02. oktober 2010 - 19:41 #8
Hej Arne,

Du har helt ret.. det er de linjer som der er problemet kan jeg se.

Men jeg kan ikke se hvorfor bootServer ikke bliver hørt.. Jeg har jo lavet en thread her som køre den..

                    chatServer e = new chatServer();
                        while (stop = true) {
                            Thread t = new Thread(e);
                            e.bootServer(Serversocket.accept());
                            t.start();

                        }
Avatar billede arne_v Ekspert
02. oktober 2010 - 19:49 #9
Hvordan virker:

chatServer e = new chatServer();
                        while (stop == true) {
                            e.bootServer(Serversocket.accept());
                            Thread t = new Thread(e);
                            t.start();

                        }

?
Avatar billede Sjap_ Nybegynder
02. oktober 2010 - 19:55 #10
hm.. Det er faktisk stadig samme fejl
Avatar billede Sjap_ Nybegynder
03. oktober 2010 - 22:52 #11
Har du ellers en god idé Arne?
Avatar billede arne_v Ekspert
04. oktober 2010 - 04:24 #12
start bliver så vidt jeg kan se ikke kaldt og så bliver bootserver heller ikke kaldt.
Avatar billede Sjap_ Nybegynder
04. oktober 2010 - 12:28 #13
Hej Arne,

Det har du ret i. Jeg har arbejdet lidt med koden, og fjernet bootserver() nu er der så bare et andet problem. Jeg den må jeg lige arbejde lidt med og se om jeg kan løse.

jeg siger mange tak for din tid :)
Avatar billede arne_v Ekspert
20. november 2010 - 01:16 #14
Kommet videre?
Avatar billede Sjap_ Nybegynder
21. november 2010 - 11:53 #15
Hej Arne,

Desværre.. Der kommer stadig en:
Exception in thread "Thread-3" java.lang.NullPointerException
    at chatServer.run(Main.java:88)
    at java.lang.Thread.run(Thread.java:619)

ved min:

PrintWriter ud = new PrintWriter(forbin1.getOutputStream());
Avatar billede arne_v Ekspert
21. november 2010 - 18:06 #16
Lyder som om forbin1 er null ?
Avatar billede Sjap_ Nybegynder
21. november 2010 - 18:34 #17
Jeps, noget kunne tyde på det..

Men hvis jeg starter min server igennem main() så virker det fint. Men hvis jeg starter den fra min GUI så kommer den fejl der..

Har du en ide til hvorfor dette kan gå galt at jeg starte min class i en Thread fra min gui?
Avatar billede arne_v Ekspert
22. november 2010 - 01:42 #18
Du må jo checke flowet i det to tilfælde ogs e hvor forbin1 bliver initialiseret henholdsvis ikke bliver initialiseret.
Avatar billede Sjap_ Nybegynder
01. december 2010 - 08:40 #19
Jeg lukker tråden. Jeg har nu fået et andet problem jeg vil undersøge først.

Jeg takker mange gange for jeres input.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester