Avatar billede sir_smokealot Nybegynder
19. marts 2003 - 18:06 Der er 22 kommentarer og
1 løsning

Exception???

Hvad betyder en java.lang.NullPointerException?
jeg får den når jeg compilere min GUI del.
Avatar billede soreno Praktikant
19. marts 2003 - 18:08 #1
Fra docs:
public class NullPointerException

Thrown when an application attempts to use null in a case where an object is required. These include:

    * Calling the instance method of a null object.
    * Accessing or modifying the field of a null object.
    * Taking the length of null as if it were an array.
    * Accessing or modifying the slots of null as if it were an array.
    * Throwing null as if it were a Throwable value.
Avatar billede viciodk Praktikant
19. marts 2003 - 18:09 #2
public class NullPointerException
extends RuntimeException
Thrown when an application attempts to use null in a case where an object is required. These include:

Calling the instance method of a null object.
Accessing or modifying the field of a null object.
Taking the length of null as if it were an array.
Accessing or modifying the slots of null as if it were an array.
Throwing null as if it were a Throwable value.
Applications should throw instances of this class to indicate other illegal uses of the null object.


Må vi se noget kode?
Avatar billede viciodk Praktikant
19. marts 2003 - 18:09 #3
Hehe :)
Avatar billede sir_smokealot Nybegynder
19. marts 2003 - 18:14 #4
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;





public class Sprg3GUIPaneltest extends JPanel implements ActionListener
{
    private JPanel center, knapper, venstre, vogn, dato, bunden;
    private JLabel input1, input2, input3;
    private JTextField vognnummer, måned;
    private JButton søg, afslut;
    private JTextArea resultat;
    //private int WIDTH = 500, HEIGHT = 400;

    private String resudskrift;
    private Forspørgelser3 database;
    private Connection con;


    public Sprg3GUIPaneltest(Connection con)
    {

        database = new Forspørgelser3(con);


        vognnummer = new JTextField(3);
        vognnummer.addActionListener(this);

        måned = new JTextField (10);
        måned.addActionListener(this);

        søg = new JButton (" SØG ");
        søg.addActionListener(this);

        afslut = new JButton (" Afslut ");
        afslut.addActionListener(this);

        input1 = new JLabel("Indtast vognnummer");
        input2 = new JLabel("Indtast måned");
        input3 = new JLabel("Vagtens profil");

        resultat = new JTextArea(15, 35);





        setLayout (new BorderLayout());

        venstre = new JPanel();
        venstre.setLayout(new BoxLayout(venstre, BoxLayout.Y_AXIS));

        venstre.add (vogn);
        venstre.add (dato);


        vogn = new JPanel();
        vogn.setLayout(new BoxLayout(vogn, BoxLayout.X_AXIS));

        vogn.add (input1);
        vogn.add (vognnummer);


        dato = new JPanel();
        dato.setLayout(new BoxLayout(dato, BoxLayout.X_AXIS));

        dato.add (input2);
        dato.add (måned);



        knapper = new JPanel();
        knapper.add (søg);
        knapper.add (afslut);




        center = new JPanel();
        center.setLayout(new BoxLayout(center, BoxLayout.Y_AXIS));

        center.add (input3);
        center.add (resultat);



        bunden = new JPanel();
        bunden.setLayout(new BoxLayout(bunden, BoxLayout.X_AXIS));

        bunden.add (knapper);



        add (venstre, BorderLayout.WEST);
        add (center, BorderLayout.CENTER);
        add (bunden, BorderLayout.SOUTH);

    }





    public void actionPerformed(ActionEvent e)

    {
        if (e.getSource()== søg || e.getSource() == vognnummer || e.getSource() == måned)
        {
            resudskrift = database.udskrivSprg3(vognnummer.getText(),måned.getText());

            resultat.setText(resudskrift);

        }
        else if(e.getSource()==afslut)
        {
                    database.afslut();
                    System.exit(0);
        }
    }
}
Avatar billede soreno Praktikant
19. marts 2003 - 18:15 #5
Post lige exceptionen også.. :-)
Avatar billede sir_smokealot Nybegynder
19. marts 2003 - 18:19 #6
java.lang.NullPointerException

det er det eneste der står.
Min GUI-del er lavet med fanblade i main.
Avatar billede arne_v Ekspert
19. marts 2003 - 18:21 #7
Jeg vil formode at du får en NullPointerException når du kører
programmet ikke når du compiler det !
Avatar billede arne_v Ekspert
19. marts 2003 - 18:22 #8
Udover exception så må den vel også udskrive en stack trace med
filer og linie numre ??
Avatar billede sir_smokealot Nybegynder
19. marts 2003 - 18:22 #9
ja, det er korrekt
Avatar billede sir_smokealot Nybegynder
19. marts 2003 - 18:22 #10
den udskriver ikke andet.
Avatar billede arne_v Ekspert
19. marts 2003 - 18:30 #11
Så tror jeg at du har en:

try {
  ...
} catch (Exception e) {
  System.out.println(e);
}

et sted. Og den bør nok ersttates med:

try {
  ...
} catch (Exception e) {
  e.printStackTrace();
}

Det vil nemlig vise i hvilken linie fejlen sker.
Avatar billede sir_smokealot Nybegynder
19. marts 2003 - 18:41 #12
nu får jeg dette:

java.lang.NullPointerException
        at java.awt.container.addImpl<Container.java:588>
        at java.awt.container.add<Container.java:298>
        at Sprg3GUIpaneltest.<init><Sprg3GUIpaneltest.java:57>
        at Hovedtaxa.main<Hovedtaxa.java:25>
Avatar billede arne_v Ekspert
19. marts 2003 - 18:45 #13
Så sker fejlen i Sprg3GUIpaneltest.java linie 57 !
Avatar billede arne_v Ekspert
19. marts 2003 - 18:47 #14
Og det er :

        venstre.setLayout(new BoxLayout(venstre, BoxLayout.Y_AXIS));

hvis jeg har talt rigtigt !
Avatar billede sir_smokealot Nybegynder
19. marts 2003 - 18:48 #15
ja, men jeg kan ikke se hvad det er.
Må man ikke add et JPanel inden i et andet JPanel?
Avatar billede arne_v Ekspert
19. marts 2003 - 18:48 #16
Det gar jeg ikke.

Det er:

venstre.add (vogn);

og problemet er at vogn ikke er initialiseret !
Avatar billede arne_v Ekspert
19. marts 2003 - 18:49 #17
Du skal have en:

vogn = new ...;

inden du kan bruge:

venstre.add(vogn);
Avatar billede sir_smokealot Nybegynder
19. marts 2003 - 18:49 #18
nej, det er:
58  venstre.add (vogn);
59  venstre.add (dato);
Avatar billede arne_v Ekspert
19. marts 2003 - 18:50 #19
Jeg ser lige at du har den initialisering:

      venstre.add (vogn);
      venstre.add (dato);
      vogn = new JPanel();

Den skal bare flyttes op over først gang du bruger vogn.
Avatar billede sir_smokealot Nybegynder
19. marts 2003 - 18:50 #20
den har jeg også nedenunder, er det derfor?
Avatar billede arne_v Ekspert
19. marts 2003 - 18:51 #21
Ja - den skal initialiseres inden du bruger den.
Avatar billede sir_smokealot Nybegynder
19. marts 2003 - 18:51 #22
ok, nu virker det, tak for hjælpen.
Avatar billede arne_v Ekspert
19. marts 2003 - 18:53 #23
Husk det lille trick med printStackTrace og få linie-nummeret fra
stack tracen.

Det er en stor hjælpe når man skal troubleshoote.
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