gpt4 book ai didi

gwt - google-gin 提供者需要依赖项。 NullPointerException 绑定(bind)处理器.java :498

转载 作者:行者123 更新时间:2023-12-01 12:59:23 24 4
gpt4 key购买 nike

在我的 GWT 应用程序中,我正在尝试设置一个 DI 机制,它将允许我在任何地方都拥有所有常用的必需品。我正在使用 google-gin,它是 GWT 的 guice 改编版。我有一个定义为这样的注入(inject)器接口(interface):

@GinModules(InjectionClientModule.class)
public interface MyInjector extends Ginjector {
public PlaceController getPlaceController();
public Header getHeader();
public Footer getFooter();
public ContentPanel getContent();
public EventBus getEventBus();
public PlaceHistoryHandler getPlaceHistoryHandler();
}

我的注入(inject)模块是这样的:

public class InjectionClientModule extends AbstractGinModule {
public InjectionClientModule() {
super();
}

protected void configure() {
bind(Header.class).in(Singleton.class);
bind(Footer.class).in(Singleton.class);
bind(ContentPanel.class).in(Singleton.class);
bind(EventBus.class).to(SimpleEventBus.class).in(Singleton.class);
bind(PlaceController.class).toProvider(PlaceControllerProvider.class).asEagerSingleton();
bind(PlaceHistoryHandler.class).toProvider(PlaceHistoryHandlerProvider.class).asEagerSingleton();
}
}

调用 MyInjector injector = GWT.create(MyInjector.class); 时出现以下异常:

java.lang.NullPointerException: null
at com.google.gwt.inject.rebind.BindingsProcessor.createImplicitBinding(BindingsProcessor.java:498)
at com.google.gwt.inject.rebind.BindingsProcessor.createImplicitBindingForUnresolved(BindingsProcessor.java:290)
at com.google.gwt.inject.rebind.BindingsProcessor.createImplicitBindingsForUnresolved(BindingsProcessor.java:278)
at com.google.gwt.inject.rebind.BindingsProcessor.process(BindingsProcessor.java:240)
at com.google.gwt.inject.rebind.GinjectorGeneratorImpl.generate(GinjectorGeneratorImpl.java:76)
at com.google.gwt.inject.rebind.GinjectorGenerator.generate(GinjectorGenerator.java:47)
at com.google.gwt.core.ext.GeneratorExtWrapper.generate(GeneratorExtWrapper.java:48)
at com.google.gwt.core.ext.GeneratorExtWrapper.generateIncrementally(GeneratorExtWrapper.java:60)
at com.google.gwt.dev.javac.StandardGeneratorContext.runGeneratorIncrementally(StandardGeneratorContext.java:647)
at com.google.gwt.dev.cfg.RuleGenerateWith.realize(RuleGenerateWith.java:41)
at com.google.gwt.dev.shell.StandardRebindOracle$Rebinder.rebind(StandardRebindOracle.java:78)
at com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:268)
at com.google.gwt.dev.shell.ShellModuleSpaceHost.rebind(ShellModuleSpaceHost.java:141)
at com.google.gwt.dev.shell.ModuleSpace.rebind(ModuleSpace.java:585)
at com.google.gwt.dev.shell.ModuleSpace.rebindAndCreate(ModuleSpace.java:455)
at com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:49)
at com.google.gwt.core.client.GWT.create(GWT.java:97)

问题是 PlaceController 类实际上依赖于其他依赖项之一。我已经实现了这样的提供者:

public class PlaceControllerProvider implements Provider<PlaceController> { 
private final PlaceController placeController;

@Inject
public PlaceControllerProvider(EventBus eventBus) {
this.placeController = new PlaceController(eventBus);
}

@Override
public PlaceController get() {
return placeController;
}
}

我应该改变什么才能让它工作?

最佳答案

老问题,但遇到同样的问题,我一直掉在这里。我终于找到了知道哪个类在 ginjection 期间困惑的方法。

当我在开发模式下启动我的应用程序并将堆栈放入 Trace 时,我注意到有一个步骤称为:“验证新编译的单元”。在这种情况下,我有一个错误,但我没有注意到它,因为我不得不扩展 2 个甚至不是红色的节点。

错误是 “没有源代码可用于类型 com.xxx.xxxx ...”,这是由于客户端导入错误,无法转换为 Javascript。

希望这可以帮助这里的其他人!

关于gwt - google-gin 提供者需要依赖项。 NullPointerException 绑定(bind)处理器.java :498,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7528952/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com