2 ComboBox(en)

Java:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at org.sqlite.core.DB.prepare(DB.java:222)
    at org.sqlite.core.CorePreparedStatement.<init>(CorePreparedStatement.java:41)
    at org.sqlite.jdbc3.JDBC3PreparedStatement.<init>(JDBC3PreparedStatement.java:30)
    at org.sqlite.jdbc4.JDBC4PreparedStatement.<init>(JDBC4PreparedStatement.java:19)
    at org.sqlite.jdbc4.JDBC4Connection.prepareStatement(JDBC4Connection.java:48)
    at org.sqlite.jdbc3.JDBC3Connection.prepareStatement(JDBC3Connection.java:263)
    at org.sqlite.jdbc3.JDBC3Connection.prepareStatement(JDBC3Connection.java:235)
    at RepositoryClasses.BranchRepository.updateBranch(BranchRepository.java:106)
    at ModelClasses.BranchModel.update(BranchModel.java:64)
    at UserInterface.PanelBranches.update(PanelBranches.java:153)
    at UserInterface.PanelBranches.jButtonUpdateBranchActionPerformed(PanelBranches.java:452)
    at UserInterface.PanelBranches.access$000(PanelBranches.java:19)
    at UserInterface.PanelBranches$1.actionPerformed(PanelBranches.java:266)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Aus dem Code werde ich nicht schlau, weil wieder Zeilen aus meiner Viewklasse, Modelklasse und Reposklasse angezeigt werden. Das heißt ich weiß nicht wo der Fehler auftritt, wenn in allen meinen Klassen ein Fehler auftaucht.
@maGG was möchtest Du denn machen? Das Thema ist jetzt nicht gerade kurz...
Ich möchte ein Programm, welches zwei Fenster hat: Fenster 1 ist eine GUI, mit der man mit Texfeldern und ComboBoxen verschiedene Text Dateien schreibt. Diese werden einem mittels Vorschau Funktionion angezeigt. Im Fenster 2 sind mehrere Tabellen, die editierbar gemacht werden sollen. Ich hatte es eigentlich schon funktionsfähig, allerdings war der Code das Gegenteil von objektorientiert und das Programm langsam. Jetzt versuche ich mit einem verschachteltet Aufbau (Repository, Model und View Klassen) das editieren der Datenbank in den Tabellen zu ermöglichen. Dafür habe ich mit den Filialen (Branches) angefangen und dazu eine Panelklasse erstellt. Diese siehst du im letzten Beitrag von mir.
 
Aus dem Code werde ich nicht schlau, weil wieder Zeilen aus meiner Viewklasse, Modelklasse und Reposklasse angezeigt werden. Das heißt ich weiß nicht wo der Fehler auftritt, wenn in allen meinen Klassen ein Fehler auftaucht.
Der Fehler tritt nicht überall auf. Der Stacktrace zeigt Dir den "Aufrufstapel" an. Die erste Zeile gibt an, wo die NPE unmittelbar aufgetreten ist (at org.sqlite.core.DB.prepare(DB.java:222)), diese Methode wurde an der Stelle aufgerufen, die in der zweiten Zeile steht, die wiederum von der die in der dritten Zeile steht usw.

Man sieht auch schön, wie hier preparedStatement aufgerufen wird. Die Vermutung liegt also nahe, dass es damit zu tun hat.

Dein Code taucht im Stacktrace das erste mal hier auf: at RepositoryClasses.BranchRepository.updateBranch(BranchRepository.java:106)

Was steht da? Vermutlich ein conn.prepareStatement(...); ist evtl. der dort angegebene String null?
 
bin wieder da, war im Krankhaus, daher die Pause. Also bei der Add Methode kommt folgender Stacktrace:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at org.sqlite.core.DB.prepare(DB.java:222)
    at org.sqlite.core.CorePreparedStatement.<init>(CorePreparedStatement.java:41)
    at org.sqlite.jdbc3.JDBC3PreparedStatement.<init>(JDBC3PreparedStatement.java:30)
    at org.sqlite.jdbc4.JDBC4PreparedStatement.<init>(JDBC4PreparedStatement.java:19)
    at org.sqlite.jdbc4.JDBC4Connection.prepareStatement(JDBC4Connection.java:48)
    at org.sqlite.jdbc3.JDBC3Connection.prepareStatement(JDBC3Connection.java:263)
    at org.sqlite.jdbc3.JDBC3Connection.prepareStatement(JDBC3Connection.java:235)
    at RepositoryClasses.BranchRepository.insertBranch(BranchRepository.java:136)
    at ModelClasses.BranchModel.add(BranchModel.java:52)
    at UserInterface.PanelBranches.save(PanelBranches.java:172)
    at UserInterface.PanelBranches.jButtonSaveBranchActionPerformed(PanelBranches.java:456)
    at UserInterface.PanelBranches.access$100(PanelBranches.java:19)
    at UserInterface.PanelBranches$2.actionPerformed(PanelBranches.java:274)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
BranchModel.java:52:
Java:
branches.insertBranch(branch);
PanelBranches.java:172
Java:
branchModel.add(current);
PanelBranches.java:456:
Java:
save(branch);
Und beim Aktualisieren kommt diese Fehlermeldung:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at org.sqlite.core.DB.prepare(DB.java:222)
    at org.sqlite.core.CorePreparedStatement.<init>(CorePreparedStatement.java:41)
    at org.sqlite.jdbc3.JDBC3PreparedStatement.<init>(JDBC3PreparedStatement.java:30)
    at org.sqlite.jdbc4.JDBC4PreparedStatement.<init>(JDBC4PreparedStatement.java:19)
    at org.sqlite.jdbc4.JDBC4Connection.prepareStatement(JDBC4Connection.java:48)
    at org.sqlite.jdbc3.JDBC3Connection.prepareStatement(JDBC3Connection.java:263)
    at org.sqlite.jdbc3.JDBC3Connection.prepareStatement(JDBC3Connection.java:235)
    at RepositoryClasses.BranchRepository.updateBranch(BranchRepository.java:106)
    at ModelClasses.BranchModel.update(BranchModel.java:64)
    at UserInterface.PanelBranches.update(PanelBranches.java:153)
    at UserInterface.PanelBranches.jButtonUpdateBranchActionPerformed(PanelBranches.java:450)
    at UserInterface.PanelBranches.access$000(PanelBranches.java:19)
    at UserInterface.PanelBranches$1.actionPerformed(PanelBranches.java:266)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
BranchModel.java:64:
Java:
branches.updateBranch(branch);
PanelBranches.java:153:
Java:
branchModel.update(current);
PanelBranches.java:450:
Java:
update(branch);
Der StackTrace hilft mir leider überhaupt nicht. Oder könnt ihr daran ein Fehler erkennen? Das wäre so wie wenn der StackTrace mir sagt, dass der Fehler ein Reiskorn in nem vollen Sack ist, mir also nur sagt welchen Sack ich anschauen muss. Die Zehntausenden Körner sind dann alle Möglichkeiten, an denen es liegen könnte.
 
Der StackTrace hilft mir leider überhaupt nicht. Oder könnt ihr daran ein Fehler erkennen?
s. Kommentar #203. Du musst Dir anschauen, was an den im Stack-Trace genannten Stellen im Code passiert. Mit hoher Wahrscheinlichkeit ist irgendwo irgendetwas null. Wenn Du gar nichts findest: Debugger anwerfen.
 
hab den Fehler endlich gefunden. Es liegt dan den fireEvents bzw. den Listener. Habe die entsprechenden Zeilen mal auskommentiert und die NPE kam nicht mehr.

BranchModel.java, update Methode:
Java:
int ix = data.indexOf(branch);
fireContentsChanged(ix, ix);
fireTableRowsUpdated(ix, ix);
Java:
    protected void fireContentsChanged(int index0, int index1){
        ListDataEvent event = new ListDataEvent(this, ListDataEvent.CONTENTS_CHANGED, index0, index1);
        for (ListDataListener l : listeners.getListeners(ListDataListener.class)) {
            l.contentsChanged(event);
        }
    }
BranchRepository, updateBranch Methode:
Java:
fireUpdated(branch);
Java:
    private void fireUpdated(Branch branch) {
        fireEvent(new RepositoryEvent<>(RepositoryEvent.Type.UPDATED, branch));
    }
   
    private void fireEvent(RepositoryEvent<Branch> event) {
        Iterator<WeakReference<RepositoryListener<Branch>>> it = listeners.iterator();
        while (it.hasNext()) {
            WeakReference<RepositoryListener<Branch>> ref = it.next();
            RepositoryListener<Branch> listener = ref.get();
            if (listener != null) {
                listener.eventOccured(event);          
            } else {
                it.remove();
            }
        }
    }
Ist da was falsch/fehlt da was vielleicht?

Ich habe auch noch kein Element zugewiesen, wo die Information angezeigt wird. Ich verstehe auch noch nicht, was da genau angezeigt wird. Und du hattest in einem früheren Kommentar geschrieben, dass in meinen update/add/delte Methode mein TableModel eigentlich automatisch aktualisiert wird. Das habe ich auch noch nicht verstanden, wie das funktionert.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben