Я интегрировал CDI в свое приложение JavaFX и настроил ResourceBundle.Но, к сожалению, в классе MainView объект Inject имеет исключение нулевого указателя.
Вот мой код:
Класс конфигурации
@Singleton
public class ResourceProvider {
@Produces
private ResourceBundle defaultResourceBundle = ResourceBundle.getBundle("default");
}
Класс стартера:
public class App extends MvvmfxCdiApplication {
private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(App.class);
@Inject
private ResourceBundle resourceBundle;
public static void main(String... args) {
Locale.setDefault(Locale.US);
launch(args);
}
@Override
public void startMvvmfx(Stage stage) throws Exception {
LOG.info("Starting the Application");
MvvmFX.setGlobalResourceBundle(resourceBundle);
ViewTuple<MainView, MainViewModel> viewTuple = FluentViewLoader
.fxmlView(MainView.class)
.resourceBundle(resourceBundle)
.load();
Parent root = viewTuple.getView();
stage.setScene(new Scene(root));
stage.setTitle(resourceBundle.getString("window.title"));
stage.show();
}
public void triggerShutdown(@Observes TriggerShutdownEvent event) {
LOG.info("Application will now shut down");
Platform.exit();
}
}
В начальном классе нет проблем с полем resourceBundle, но в исключении нулевого указателя класса MainView.
Класс MainView
public class MainView implements FxmlView<MainViewModel>, Initializable {
@Inject
private ResourceBundle resourceBundle; // null pointer is here
...
...
}
Вот мой xml-файл конфигурации CDI:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
bean-discovery-mode="all">
Сообщение об исключении здесь:
Caused by: java.lang.NullPointerException
at com.arion.contacts_mvvm.ui.main.MainView.<init>(MainView.java:30)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
Я не понимаю, почему исключение нулевого указателя.