试图将事件总线注入组件,但我得到“没有默认(零参数)构造函数”。错误。任何线索我做错了什么?GIN 很新,所以它可能是微不足道的..
这是我的代码:
模块:
public class MyWidgetClientModule extends AbstractGinModule {
protected void configure() {
bind(EventBus.class).to(SimpleEventBus.class).in(Singleton.class);
}
}
注射器:
@GinModules(MyWidgetClientModule.class)
public interface MyWidgetGinjector extends Ginjector {
}
以及我尝试注入的组件:
public class I18NLabel extends Label implements ChangeLanguageEventHandler{
private final SimpleEventBus eventBus;
private String key;
@Inject
public I18NLabel(SimpleEventBus eventBus) {
this.eventBus = eventBus;
}
...
它给了我这个错误日志:
00:00:45.767 [DEBUG] Rebinding com.test.fdc.gui.gwt.client.customer.CustomerDetailView.Binder
00:00:45.767 [DEBUG] Invoking generator com.google.gwt.uibinder.rebind.UiBinderGenerator
00:00:45.767 [ERROR] com.test.fdc.gui.gwt.client.content.i18n.I18NLabel has no default (zero args) constructor. To fix this, you can define a @UiFactory method on the UiBinder's owner, or annotate a constructor of I18NLabel with @UiConstructor.
00:00:45.767 [ERROR] Deferred binding failed for 'com.test.fdc.gui.gwt.client.customer.CustomerDetailView.Binder'; expect subsequent failures
00:00:45.767 [ERROR] Uncaught exception escaped
java.lang.ExceptionInInitializerError: null 在 com.test.fdc.gui.gwt.client.FDC$4.onSuccess(FDC.java:394) 在 com.test.fdc.gui.gwt.client.FDC$4.onSuccess(FDC.java:1) 在 com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:215) 在 com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:287) 在 com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:395) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) 在 com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 在 com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157) 在 com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:326) 在 com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:207) 在 com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:126) 在 com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:562) 在 com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269) 在 com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91) 在 com.google.gwt.core.client.impl.Impl.apply(Impl.java) 在 com.google.gwt.core.client.impl.Impl.entry0(Impl.java:214) 在 sun.reflect.GeneratedMethodAccessor22.invoke(未知来源) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) 在 com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 在 com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157) 在 com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:281) 在 com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:531) 在 com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:352) 在 java.lang.Thread.run(Thread.java:619) 原因:java.lang.RuntimeException: Deferred binding failed for 'com.test.fdc.gui.gwt.client.customer.CustomerDetailView$Binder' (您是否忘记继承所需的模块?) 在 com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:53) 在 com.google.gwt.core.client.GWT.create(GWT.java:97) 在 com.test.fdc.gui.gwt.client.customer.CustomerDetailView.(CustomerDetailView.java:34) 在 com.test.fdc.gui.gwt.client.FDC$4.onSuccess(FDC.java:394) 在 com.test.fdc.gui.gwt.client.FDC$4.onSuccess(FDC.java:1) 在 com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:215) 在 com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:287) 在 com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:395) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) 在 com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 在 com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157) 在 com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:326) 在 com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:207) 在 com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:126) 在 com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:562) 在 com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269) 在 com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91) 在 com.google.gwt.core.client.impl.Impl.apply(Impl.java) 在 com.google.gwt.core.client.impl.Impl.entry0(Impl.java:214) 在 sun.reflect.GeneratedMethodAccessor22.invoke(未知来源) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) 在 com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 在 com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157) 在 com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:281) 在 com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:531) 在 com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:352) 在 java.lang.Thread.run(Thread.java:619) 由:com.google.gwt.core.ext.UnableToCompleteException 引起:(请参阅以前的日志条目) 在 com.google.gwt.dev.shell.ModuleSpace.rebind(ModuleSpace.java:596) 在 com.google.gwt.dev.shell.ModuleSpace.rebindAndCreate(ModuleSpace.java:456) 在 com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:49) 在 com.google.gwt.core.client.GWT.create(GWT.java:97) 在 com.test.fdc.gui.gwt.client.customer.CustomerDetailView.(CustomerDetailView.java:34) 在 com.test.fdc.gui.gwt.client.FDC$4.onSuccess(FDC.java:394) 在 com.test.fdc.gui.gwt.client.FDC$4.onSuccess(FDC.java:1) 在 com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:215) 在 com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:287) 在 com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:395) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) 在 com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 在 com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157) 在 com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:326) 在 com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:207) 在 com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:126) 在 com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:562) 在 com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269) 在 com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91) 在 com.google.gwt.core.client.impl.Impl.apply(Impl.java) 在 com.google.gwt.core.client.impl.Impl.entry0(Impl.java:214) 在 sun.reflect.GeneratedMethodAccessor22.invoke(未知来源) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) 在 com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 在 com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157) 在 com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:281) 在 com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:531) 在 com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:352) 在 java.lang.Thread.run(Thread.java:619)