GWT GIN — сбой тривиального варианта использования (EventBus)

#java #gwt

#java #gwt

Вопрос:

Модуль GIN:

 public class InjectorModule extends AbstractGinModule {
    @Override
    protected void configure() {
        bind(EventBus.class).to(SimpleEventBus.class).in(Singleton.class);
    }
}
 

Инжектор:

 @GinModules(InjectorModule.class)
public interface Injector extends Ginjector {
    EventBus getEventBus();
}
 

Точка входа модуля GWT:

 public class Module1 implements EntryPoint {
    private final Injector injector = GWT.create(Injector.class);

    public void onModuleLoad() {        
        injector.getEventBus();
    }   
}
 

Удаление вызова, чтобы injector.getEventBus() все работало нормально. Вызов injector.getEventBus() причин:

 Caused by: java.lang.RuntimeException: Deferred binding failed for 'com.google.web.bindery.event.shared.EventBus' (did you forget to inherit a required module?)
at com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:53)
at com.google.gwt.core.client.GWT.create(GWT.java:97)
at com.XXX.app.client.InjectorImpl.create_Key$type$com$google$web$bindery$event$shared$EventBus$_annotation$none$(InjectorImpl.java:72)
at com.XXX.app.client.InjectorImpl.get_Key$type$com$google$web$bindery$event$shared$EventBus$_annotation$none$(InjectorImpl.java:86)
at com.XXX.app.client.InjectorImpl.getEventBus(InjectorImpl.java:7)
at com.XXX.app.client.Module1.onModuleLoad(Module1.java:24)
 

Режим разработки GWT говорит:

 23:58:50.287 [ERROR] Deferred binding result type 'com.google.web.bindery.event.shared.EventBus' should not be abstract
 

Ответ №1:

если вы используете gwt 2.4:

Теперь есть две EventBus (одна устарела) убедитесь, что вы используете один и тот же тип в инжекторе и в вашей точке входа.

Ответ №2:

Примечание: если вы используете GWT Activity и столкнулись с этой проблемой, пожалуйста, отметьте этот запрос обходным путем. https://code.google.com/p/google-web-toolkit/issues/detail?id=6653