JavaFX зависает, когда системная дата / время изменились на день / время в прошлом

2

У меня странная проблема. Я запускаю свою программу JavaFX, которая рисует объекты (прямоугольники, круги и т.д.) На экране с помощью команд, отправленных через сокет. При изменении системных часов назад (например, в 11:00 оно изменяется в 9:00), JavaFX не показывает результат (т.е. Созданный объект) выполненных команд, а программная логика в фоновом режиме работает и печатает сообщения в консоли для полученную и выполненную команду, но на экране ничего не отображается. Время изменяется командой:

sudo date --set 'time' && sudo hwclock --systohc

ОС - Ubuntu 16.04.4 LTS с версией ядра 3.4.39-s5p4418. Эта ОС работает на модуле Smart4418.

uname -a вывод:

Linux 4418Module 3.4.39-s5p4418 # 1 SMP PREEMPT Пт авг 18 14:06:20 HKT 2017 armv7l armv7l armv7l GNU/Linux

Версия Java:

java-версия "1.8.0_171"
Java (TM) SE Runtime Environment (сборка 1.8.0_171-b11)
Клиентская виртуальная машина Java HotSpot (TM) (сборка 25.171-b11, смешанный режим)

Я использую JavaFX Embedded SDK, загружаемый с сайта Gluon.

  • 2
    Я не могу придумать ни одного разумного объяснения, кроме чего-то странного с кодом. Можете ли вы опубликовать минимальный воспроизводимый пример ?
  • 0
    Да, конечно @Itai! Я загрузил код по этой ссылке - pastebin.com/FjcR2qSj
Теги:
javafx

1 ответ

2

Monocle.java в jfxrt.jar использует java/util/Timer.java(JDK1.8) для управления экраном.

Метод "MainLoop" в TimerThread (JDK1.8) вычисляет время выполнения с использованием "системного времени".

Если "системное время" идет назад, этот таймер замораживается.

Я исправил его, изменив Monocle.java, чтобы вызвать измененный Timer.java, и обновить их в jfxrt.jar

  • 1
    Можете ли вы поделиться своим решением, @ user10384350?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню