Почему возникает ошибка при создании
blockquote>static Label
, но неstatic Rectangle
?По сути, это вопрос порядка инициализации. Платформа UI должна быть правильно инициализирована при создании объектов
Node
. Потенциально это также может случиться сRectangle
, но, скорее всего,Label
(который являетсяControl
) полагается даже на правильно инициализированную платформу. В этом конкретном случае разница в том, что объектыShape
не требуютCSS
, а объектыControl
-. Это приводит к тому, что методы платформы вызывается как показано в трассировке стека в тот момент, когда инструментарий еще не инициализирован.
- Элемент класса
static
инициализируется при загрузкеclass mvce
, Это делается до вызова методаmain()
и, следовательно, до вызова методаlaunch()
. Платформа еще не инициализирована на данный момент.- Нестатический член, с другой стороны, инициализируется при создании экземпляра
class mvce
.class mvce
создается внутри методаlaunch()
после правильной инициализации инструментария.Кроме того, обычно нет причин использовать статические ссылки. Просто используйте член.