代码之家  ›  专栏  ›  技术社区  ›  M. Teasdale

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

  •  0
  • M. Teasdale  · 技术社区  · 7 年前

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

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

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

    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 回复  |  直到 7 年前
    推荐文章