Поскольку вы используете модуль, по умолчанию отражение не имеет доступа к закрытым членам ваших классов. Исключение в основном говорит вам, что нужно сделать:
module tech.flexpoint.dashman {
...
// allow everyone to access classes in tech.flexpoint.dashman.controllers.configurator via reflection
opens tech.flexpoint.dashman.controllers.configurator;
}
или
module tech.flexpoint.dashman {
...
// allow only module javafx.fxml access classes in tech.flexpoint.dashman.controllers.configurator via reflection
opens tech.flexpoint.dashman.controllers.configurator to javafx.fxml;
}
Это не делает @FXML
бесполезным. По-прежнему необходимо помечать элементы, не являющиеся public
, которые разрешено использовать FXMLLoader
, просто необходимо явно указать, что отражение может переопределять доступ к членам. (FXMLLoader
использует отражение, поэтому, по крайней мере, модулю javafx.fxml
необходим такой доступ для инъекции.)
В зависимости от содержимого вашего пакета может быть полезно переместить контроллер (ы) в его собственный подпакет, чтобы не разрешать отражающий доступ к неконтроллерным классам.