Javafx应用程序中场景更新期间的Nullpointerexception

时间:2017-01-23 22:42:34

标签: multithreading javafx nullpointerexception

我正在开发一个带有http通信,套接字等的大型java fx应用程序。消息的内容更新了GUI元素。我知道每当我想从普通线程更新javafx元素时我都需要调用Platform.runlater()。我99%肯定,到处都有。但是应用程序非常庞大,并非一切都由我自己完成。 为了提供更多信息,每100ms有一个TimerTask,它从字节数组创建一个Image。 imageView.setImage(image)的呼叫在Platform.runlater()中完成。

但是,我收到以下错误(使用java 1.8.0.0_102):

      2017-01-20T05:03:47,030 FATAL [JavaFX Application Thread] uncaughtException - Thread[JavaFX Application Thread,5,main]
          java.lang.NullPointerException
         at javafx.scene.Scene$ScenePulseListener.synchronizeSceneNodes(Unknown Source) ~[jfxrt.jar:?]
         at javafx.scene.Scene$ScenePulseListener.pulse(Unknown Source) ~[jfxrt.jar:?]
         at com.sun.javafx.tk.Toolkit.lambda$runPulse$30(Unknown Source) ~[jfxrt.jar:?]
         at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_77]
         at com.sun.javafx.tk.Toolkit.runPulse(Unknown Source) ~[jfxrt.jar:?]
         at com.sun.javafx.tk.Toolkit.firePulse(Unknown Source) ~[jfxrt.jar:?]
         at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(Unknown Source) ~[jfxrt.jar:?]
         at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(Unknown Source) ~[jfxrt.jar:?]
         at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$404(Unknown Source) ~[jfxrt.jar:?]
         at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source) ~[jfxrt.jar:?]
         at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) ~[jfxrt.jar:?]
         at com.sun.glass.ui.win.WinApplication.lambda$null$148(Unknown Source) ~[jfxrt.jar:?]
         at java.lang.Thread.run(Unknown Source) [?:1.8.0_77]

有关如何查找此错误来源的任何建议?正如我上面提到的,我检查了所有线程,在fx线程上没有调用任何与fx相关的线程。我不确定,您是否允许在非fx线程上加载图像(Java FX图像)?我在一个小样本应用程序中对它进行了测试,它没有给出任何错误。

修改 我发现了这个问题:same error,但是我试图强行更新场景。

感谢您的任何想法!

0 个答案:

没有答案