Исключение нулевого указателя в аннотации @Inject в CDI - PullRequest
0 голосов
/ 05 февраля 2019

Я интегрировал 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)

Я не понимаю, почему исключение нулевого указателя.

...