JavaFX 8: исключение нулевого указателя при обновлении экрана - PullRequest
0 голосов
/ 30 августа 2018

Приложение имеет экран «текущий прогресс», состоящий из нескольких текстовых полей и табличных представлений. Поступающие данные обрабатываются в отдельном потоке и хранятся в базе данных. Когда обработка завершена, она переключает 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)

Здесь нет индикатора того, где в моей программе что-то пошло не так. Я пытался воспроизвести проблему безуспешно.

У кого-нибудь есть мысли о том, что это может быть или как его устранить?

РЕДАКТИРОВАТЬ: «Экран progess» показывает входящие и исходящие сетевые сообщения и запрашивает базу данных для обновления нескольких полей на экране. Во всех примерах, которые я видел, фоновый поток запускается из основного потока JavaFX, но в этом случае фоновый поток (сервер) запускается до потока JavaFX. Я хочу запустить обновление потока JavaFX для сообщения, поступающего в поток сервера.

...