openjverein / jverein

Open JVerein - Open Source Vereinsverwaltung
https://openjverein.github.io
GNU General Public License v3.0
41 stars 15 forks source link

NullPointerException beim Erstellen einer Sollbuchung #230

Open lukas-mertens opened 2 months ago

lukas-mertens commented 2 months ago

Ähnlich wie in #20 tritt bei uns derzeit eine NullPointerException beim Erstellen einer Sollbuchung unter Mitglied => Sollbuchung erstellen auf. Allerdings: Immer, auch wenn das Mitglied ausgewählt ist. Wir konnten somit noch keinen Workaround finden überhaupt noch eine Sollbuchung zu machen. Hier scheint irgendwas in letzter Zeit kaputtgegangen zu sein. Im folgenden das Diagnoseprotokoll:

Jameica: 2.10.4 (build date: 20230414)

Plugins:
  hibiscus 2.10.20(build date: 20240405)
  jverein 2.8.21(build date: 20240210)

os.arch          : x86_64
os.name          : Mac OS X
os.version       : 14.4

java.version     : 11.0.18
java.vendor      : Eclipse Adoptium
java.runtime.name: OpenJDK Runtime Environment
java.vm.name     : OpenJDK 64-Bit Server VM

file.encoding    : UTF-8

*** Stacktrace ***

java.lang.NullPointerException
    at org.eclipse.swt.widgets.Control.calculateVisibleRegion(Control.java:775)
    at org.eclipse.swt.widgets.Control.getVisibleRegion(Control.java:2060)
    at org.eclipse.swt.widgets.Control.isObscured(Control.java:2341)
    at org.eclipse.swt.widgets.Scrollable.scrollClipViewToPoint(Scrollable.java:347)
    at org.eclipse.swt.widgets.Display.windowProc(Display.java:6811)
    at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native Method)
    at org.eclipse.swt.internal.cocoa.NSScrollView.setDocumentView(NSScrollView.java:91)
    at org.eclipse.swt.widgets.Scrollable.setZOrder(Scrollable.java:396)
    at org.eclipse.swt.widgets.Control.createWidget(Control.java:1026)
    at org.eclipse.swt.widgets.Scrollable.createWidget(Scrollable.java:167)
    at org.eclipse.swt.widgets.Text.createWidget(Text.java:596)
    at org.eclipse.swt.widgets.Control.<init>(Control.java:126)
    at org.eclipse.swt.widgets.Scrollable.<init>(Scrollable.java:76)
    at org.eclipse.swt.widgets.Text.<init>(Text.java:140)
    at de.willuhn.jameica.gui.style.StyleFactoryDefaultImpl.createTextArea(StyleFactoryDefaultImpl.java:73)
    at de.willuhn.jameica.gui.input.TextAreaInput.getTextWidget(TextAreaInput.java:51)
    at de.willuhn.jameica.gui.input.TextInput.getControl(TextInput.java:116)
    at de.willuhn.jameica.gui.input.AbstractInput.paint(AbstractInput.java:120)
    at de.willuhn.jameica.gui.input.AbstractInput.paint(AbstractInput.java:101)
    at de.willuhn.jameica.gui.util.Container.addLabelPair(Container.java:98)
    at de.jost_net.JVerein.gui.view.MitgliedskontoDetailView.bind(MitgliedskontoDetailView.java:47)
    at de.willuhn.jameica.gui.GUI$5.run(GUI.java:724)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
    at de.willuhn.jameica.gui.GUI$6.run(GUI.java:921)
    at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
    at org.eclipse.swt.widgets.Display.syncExec(Display.java:5250)
    at de.willuhn.jameica.gui.GUI.startSync(GUI.java:917)
    at de.willuhn.jameica.gui.GUI.startView(GUI.java:601)
    at de.jost_net.JVerein.gui.action.MitgliedskontoDetailSollNeuAction.handleAction(MitgliedskontoDetailSollNeuAction.java:62)
    at de.willuhn.jameica.gui.parts.ContextMenu$1.handleEvent(ContextMenu.java:184)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4646)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1524)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1547)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1532)
    at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1325)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4413)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3989)
    at de.willuhn.jameica.gui.GUI.loop(GUI.java:938)
    at de.willuhn.jameica.gui.GUI.init(GUI.java:335)
    at de.willuhn.jameica.system.Application.init(Application.java:145)
    at de.willuhn.jameica.system.Application.newInstance(Application.java:87)
    at de.willuhn.jameica.Main.main(Main.java:78)

Der relevante Teil aus dem Systemprotokoll:

[Fri May 24 13:31:56 CEST 2024][ERROR][main][de.willuhn.jameica.gui.GUI$5.run] error while loading view de.jost_net.JVerein.gui.view.MitgliedskontoDetailView
java.lang.NullPointerException
    at org.eclipse.swt.widgets.Control.calculateVisibleRegion(Control.java:775)
    at org.eclipse.swt.widgets.Control.getVisibleRegion(Control.java:2060)
    at org.eclipse.swt.widgets.Control.isObscured(Control.java:2341)
    at org.eclipse.swt.widgets.Scrollable.scrollClipViewToPoint(Scrollable.java:347)
    at org.eclipse.swt.widgets.Display.windowProc(Display.java:6811)
    at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native Method)
    at org.eclipse.swt.internal.cocoa.NSScrollView.setDocumentView(NSScrollView.java:91)
    at org.eclipse.swt.widgets.Scrollable.setZOrder(Scrollable.java:396)
    at org.eclipse.swt.widgets.Control.createWidget(Control.java:1026)
    at org.eclipse.swt.widgets.Scrollable.createWidget(Scrollable.java:167)
    at org.eclipse.swt.widgets.Text.createWidget(Text.java:596)
    at org.eclipse.swt.widgets.Control.<init>(Control.java:126)
    at org.eclipse.swt.widgets.Scrollable.<init>(Scrollable.java:76)
    at org.eclipse.swt.widgets.Text.<init>(Text.java:140)
    at de.willuhn.jameica.gui.style.StyleFactoryDefaultImpl.createTextArea(StyleFactoryDefaultImpl.java:73)
    at de.willuhn.jameica.gui.input.TextAreaInput.getTextWidget(TextAreaInput.java:51)
    at de.willuhn.jameica.gui.input.TextInput.getControl(TextInput.java:116)
    at de.willuhn.jameica.gui.input.AbstractInput.paint(AbstractInput.java:120)
    at de.willuhn.jameica.gui.input.AbstractInput.paint(AbstractInput.java:101)
    at de.willuhn.jameica.gui.util.Container.addLabelPair(Container.java:98)
    at de.jost_net.JVerein.gui.view.MitgliedskontoDetailView.bind(MitgliedskontoDetailView.java:47)
    at de.willuhn.jameica.gui.GUI$5.run(GUI.java:724)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
    at de.willuhn.jameica.gui.GUI$6.run(GUI.java:921)
    at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
    at org.eclipse.swt.widgets.Display.syncExec(Display.java:5250)
    at de.willuhn.jameica.gui.GUI.startSync(GUI.java:917)
    at de.willuhn.jameica.gui.GUI.startView(GUI.java:601)
    at de.jost_net.JVerein.gui.action.MitgliedskontoDetailSollNeuAction.handleAction(MitgliedskontoDetailSollNeuAction.java:62)
    at de.willuhn.jameica.gui.parts.ContextMenu$1.handleEvent(ContextMenu.java:184)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4646)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1524)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1547)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1532)
    at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1325)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4413)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3989)
    at de.willuhn.jameica.gui.GUI.loop(GUI.java:938)
    at de.willuhn.jameica.gui.GUI.init(GUI.java:335)
    at de.willuhn.jameica.system.Application.init(Application.java:145)
    at de.willuhn.jameica.system.Application.newInstance(Application.java:87)
    at de.willuhn.jameica.Main.main(Main.java:78)
lukas-mertens commented 2 months ago

https://github.com/eclipse-platform/eclipse.platform.swt/issues/472

Vielleicht ist es auch ein Problem von Jameica bzw. von SWT. Man könnte ggf. mal Jameica auf eine neuere Version updaten

MSchmalzl commented 2 months ago

Unter Windows kann ich das verhalten mit den gleichen Versionen so nicht reproduzieren. Es tritt bei mir keine Exception auf.

dippeal commented 3 weeks ago

Unter Linux kann ich es auch nicht reproduzieren. @lukas-mertens bitte mal jverein neustarten, anschließend das Log-Level auf Debug oder Trace stellen (kurz bevor die fehlerhafte Funktion ausgelöst wird). Vielleicht wird dann etwas sichtbar (z.B. Datenbank-Fehler).

lukas-mertens commented 2 weeks ago

@dippeal Update: Auf dem Nightly Build tritt es ebenfalls auf. Ich kann gerade nicht viel mehr herausfinden, zumindest konnte ich gerade auch nicht die Option finden das LogLevel hoch zu stellen. Der StackTrace von mir passt aber exakt zu dem Issue das ich verlinkt hatte und der Fakt dass das Problem bei uns bei zwei unterschiedlichen Macs auftritt, lässt die Vermutung zu, dass es tatsächlich durch SWT ausgelöst wird. Gegebenenfalls möchte man irgendwann bei Gelegenheit sowieso mal die Dependencies von Jameica und JVerein hochziehen auf neuere Versionen

dippeal commented 2 weeks ago

Ich glaube hier gibt es eine Vermischung beim build. Wenn man sich den aktuellen Code anschaut gibt es dort keine Klassen "MitgliedskontoDetailView" oder "MitgliedskontoDetailSollNeuAction". Beim Download der source code.zip sind diese Dateien aber vorhanden.

dippeal commented 2 weeks ago

https://github.com/openjverein/jverein/pull/262 erstellt. Anschließend sollte das nightly noch mal getestet werden.

dippeal commented 1 week ago

Bitte mit dem neuen nightly noch mal testen: https://github.com/openjverein/jverein/releases/tag/2.8.22-nightly