Avatar billede Slettet bruger
07. juni 2010 - 20:46 Der er 23 kommentarer og
1 løsning

java.lang.NullPointerException

Jeg skal bruge en der kan give mig en hånd med en opgave jeg har.
Opgaven er inddelt efter 3 lags modellen og har interface imellem hvert lagt. Jeg får fejlen java.lang.NullPointerException ved 4 af mine funktionen og jeg kan godt regne ud at det er fordi der forventes et objekt og den ikke får det, men jeg kan ikke lige regne ud hvor :)

Nogen der skulle have mod på at give mig en hånd ? Send mig gerne en PM, jeg kigger her ind hvert 10. min resten af aften frem til midnat.
Avatar billede arne_v Ekspert
07. juni 2010 - 21:10 #1
Faar du ikke en stacktrace med filnavne og linienumre, saa du kan se hvor det sker?
Avatar billede Slettet bruger
07. juni 2010 - 21:32 #2
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at Fitness.Data.TeamData.TilfoejBrugerTilTeam(TeamData.java:37)
    at Fitness.Data.Database.tilmeldBruger(Database.java:102)
    at Fitness.Funktionalitet.Control.tilmeldBruger(Control.java:94)
    at Fitness.UI.HovedProgram.jButton9_actionPerformed(HovedProgram.java:508)
    at Fitness.UI.HovedProgram.access$1100(HovedProgram.java:41)
    at Fitness.UI.HovedProgram$12.actionPerformed(HovedProgram.java:252)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:6263)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6028)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4630)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    at java.awt.Container.dispatchEventImpl(Container.java:2085)
    at java.awt.Window.dispatchEventImpl(Window.java:2478)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Avatar billede Slettet bruger
07. juni 2010 - 21:44 #3
www.ungfar.dk/download/mywork.zip
projektet hedder fitness
Avatar billede arne_v Ekspert
07. juni 2010 - 21:50 #4
stacktrace viser af fejlen sker i TeamData.java linie 37
Avatar billede arne_v Ekspert
07. juni 2010 - 21:52 #5
bruger er null her:

    public void TilfoejBrugerTilTeam(BrugerData t){
        bruger.add(t);
        }
Avatar billede arne_v Ekspert
07. juni 2010 - 21:53 #6
private ArrayList<BrugerData> bruger;

...
   
    public TeamData() {
        bruger = new ArrayList<BrugerData>();
        setHoldnavn("");
        setDato("");
        setTid("");
    }
   
    public TeamData(String holdnavn, String dato, String tid, InstruktoerData temp){
        // her mangler: bruger = new ArrayList<BrugerData>();
        setHoldnavn(holdnavn);
        setDato(dato);
        setTid(tid);
        instruktoer = temp;
        }
Avatar billede Slettet bruger
07. juni 2010 - 22:02 #7
Hvor er du sej Arne.
Det virker jo :)
Skriv lige et svar (til løsning) så tildeler jeg dig dine points og endnu engang tak for hjælpen
Avatar billede arne_v Ekspert
07. juni 2010 - 22:10 #8
svar
Avatar billede arne_v Ekspert
07. juni 2010 - 22:21 #9
public TeamData() {
        bruger = new ArrayList<BrugerData>();
        setHoldnavn("");
        setDato("");
        setTid("");
    }
 
    public TeamData(String holdnavn, String dato, String tid, InstruktoerData temp){
        bruger = new ArrayList<BrugerData>();
        setHoldnavn(holdnavn);
        setDato(dato);
        setTid(tid);
        instruktoer = temp;
    }

kan ioevrigt skrivs som:

    public TeamData() {
        this("", "", "", null);
    }
 
    public TeamData(String holdnavn, String dato, String tid, InstruktoerData temp){
        bruger = new ArrayList<BrugerData>();
        setHoldnavn(holdnavn);
        setDato(dato);
        setTid(tid);
        instruktoer = temp;
    }
Avatar billede Slettet bruger
07. juni 2010 - 22:30 #10
Fik lige testet igennem og kan se den laver samme fejl, hvis jeg vil vise brugere som er tilmeldt på et teams.
Avatar billede Slettet bruger
07. juni 2010 - 22:31 #11
Ender ud i samme class
Avatar billede arne_v Ekspert
07. juni 2010 - 22:45 #12
stacktrace?

link til opdateret kode?
Avatar billede Slettet bruger
07. juni 2010 - 23:04 #13
www.ungfar.dk/download/mywork_v1.zip


Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at Fitness.UI.HovedProgram.jCVisDeltagerPaaTeam_itemStateChanged(HovedProgram.java:519)
    at Fitness.UI.HovedProgram.access$800(HovedProgram.java:41)
    at Fitness.UI.HovedProgram$9.itemStateChanged(HovedProgram.java:231)
    at javax.swing.JComboBox.fireItemStateChanged(JComboBox.java:1205)
    at javax.swing.JComboBox.selectedItemChanged(JComboBox.java:1262)
    at javax.swing.JComboBox.contentsChanged(JComboBox.java:1309)
    at javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:100)
    at javax.swing.DefaultComboBoxModel.setSelectedItem(DefaultComboBoxModel.java:88)
    at javax.swing.JComboBox.setSelectedItem(JComboBox.java:557)
    at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:603)
    at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(BasicComboPopup.java:817)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:273)
    at java.awt.Component.processMouseEvent(Component.java:6263)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(BasicComboPopup.java:481)
    at java.awt.Component.processEvent(Component.java:6028)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4630)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    at java.awt.Container.dispatchEventImpl(Container.java:2085)
    at java.awt.Window.dispatchEventImpl(Window.java:2478)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Avatar billede Slettet bruger
07. juni 2010 - 23:06 #14
Sætter jeg den gamle konstruktør tilbage fejler den ikke, men listen er tom, hvilket nok skylles er der så er to af dem.
Avatar billede Slettet bruger
07. juni 2010 - 23:48 #15
Når jeg bruger den kode som du skrev:

    public TeamData() {
        this("", "", "", null);
    }

    public TeamData(String holdnavn, String dato, String tid, InstruktoerData temp){
        bruger = new ArrayList<BrugerData>();
        setHoldnavn(holdnavn);
        setDato(dato);
        setTid(tid);
        instruktoer = temp;
    }

Så fejler den ikke med stacktrace, men den retunere ikke brugere som er tilmeldt et valgt team.
Avatar billede arne_v Ekspert
07. juni 2010 - 23:52 #16
HovedProgram.java linie 519 er

        jListInfoResultat.setListData(ci.visBrugerePaaEtTeam(jCVisDeltagerPaaTeam.getSelectedItem()).toArray());
Avatar billede arne_v Ekspert
07. juni 2010 - 23:54 #17
jListInfoResultat kan ikke være null

jCVisDeltagerPaaTeam kan ike være null

så det må være ci der er null
Avatar billede arne_v Ekspert
07. juni 2010 - 23:55 #18
Den kan heller ike være null.

Så det må være ci.visInstruktoersTeams som returnerer null.
Avatar billede arne_v Ekspert
07. juni 2010 - 23:59 #19
TeamData InstruktoerData er tilsyneladende null.

Hvor skulle den blive sat henne?
Avatar billede Slettet bruger
08. juni 2010 - 06:42 #20
De brugere jeg tilmelder bliver sat ind i det array i TeamData.
Det sker også uden fejl, men når jeg skal have retuneret array'et er listen tom? Er det fordi jeg har 2 konstruktører på "bruger" og hvor den i dette tilfæle returnere this("", "", "", null); som er null ?

Når man oprette et team, så har det et instans af objektet InstruktoerData. Ellers bliver InstruktoerData ikke brugt der.
Avatar billede Slettet bruger
08. juni 2010 - 06:52 #21
Hej Arne.

Jeg fandt ud af det, jeg havde kaldt den forkerte metode, hvor den ikke fik det rigtige objekt med ind. Du skal ahve 1000 tak for hjælpen.
Avatar billede M20002 Nybegynder
09. juni 2010 - 12:37 #22
Ej thomas du skal altså selv lave din eksamensopgave, dette trækker altså ned i karakter til eksamen på næste torsdag!

/M
Avatar billede Slettet bruger
09. juni 2010 - 19:06 #23
Haha :) Har skam selv lavet den.
Avatar billede arne_v Ekspert
10. juni 2010 - 02:39 #24
Et par tips relateret til nogle få linier ud af et program på rigtigt mange hundrede linier kode kan vist ikke betragtes som at få andre til at lave sin opgave.
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