JavaFX 8:屏幕更新期间出现空指针异常

时间:2018-08-30 17:31:59

标签: java multithreading javafx javafx-8

该应用程序具有一个“当前进度”屏幕,其中包括许多文本框和表格视图。传入的数据在单独的线程中处理并存储在数据库中。处理完成后,它将切换SimpleBooleanProperty。

在Java FX线程上,我将一个更改侦听器附加到该属性。更改后,我将调用一个更新例程,该例程查询数据库并更新当前进度屏幕。

有时,显示只是停止更新。我的日志显示以下异常:

30-08-18 09:04:15.781 ERROR java.lang.Throwable - Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
30-08-18 09:04:15.781 ERROR java.lang.Throwable -   at javafx.scene.Scene$ScenePulseListener.synchronizeSceneNodes(Scene.java:2289)
30-08-18 09:04:15.781 ERROR java.lang.Throwable -   at javafx.scene.Scene$ScenePulseListener.pulse(Scene.java:2419)
30-08-18 09:04:15.782 ERROR java.lang.Throwable -   at com.sun.javafx.tk.Toolkit.lambda$runPulse$29(Toolkit.java:398)
30-08-18 09:04:15.782 ERROR java.lang.Throwable -   at java.security.AccessController.doPrivileged(Native Method)
30-08-18 09:04:15.782 ERROR java.lang.Throwable -   at com.sun.javafx.tk.Toolkit.runPulse(Toolkit.java:397)
30-08-18 09:04:15.782 ERROR java.lang.Throwable -   at com.sun.javafx.tk.Toolkit.firePulse(Toolkit.java:424)
30-08-18 09:04:15.782 ERROR java.lang.Throwable -   at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:510)
30-08-18 09:04:15.782 ERROR java.lang.Throwable -   at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:490)
30-08-18 09:04:15.782 ERROR java.lang.Throwable -   at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$403(QuantumToolkit.java:319)
30-08-18 09:04:15.782 ERROR java.lang.Throwable -   at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
30-08-18 09:04:15.782 ERROR java.lang.Throwable -   at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
30-08-18 09:04:15.782 ERROR java.lang.Throwable -   at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)
30-08-18 09:04:15.782 ERROR java.lang.Throwable -   at java.lang.Thread.run(Unknown Source)

这里没有任何迹象表明我的程序哪里出错了。我试图重复该问题,但没有成功。

有人对这可能是什么或如何解决它有任何想法吗?

编辑:“进度屏幕”显示传入和传出的网络消息,并查询数据库以更新屏幕上的多个字段。在我看到的所有示例中,后台线程都是从JavaFX主线程启动的,但是在这种情况下,后台线程(服务器)是在JavaFX线程之前启动的。我想在服务器线程收到的消息上触发JavaFX线程的更新。

0 个答案:

没有答案