我正在一个基于ArcBees研究的CarStore示例的GWTP+GAE项目中工作。Maven依赖项也取自该项目。我当前的GWTP版本是1.5-SNAPSHOT。
这个项目编制得非常好。但当我运行它时,我陷入了这个错误:
[ERROR] Error injecting com.gwtplatform.dispatch.rest.delegates.client.ResourceDelegate<com.rmideas.sportbinder.shared.api.SessionResource>:
Unable to create or inherit binding: No @Inject or default constructor found for com.gwtplatform.dispatch.rest.delegates.client.ResourceDelegate<com.rmideas.sportbinder.shared.api.SessionResource>
该错误指的是LoginPresenter中声明的ResourceDelegate。但是我在代码中找不到任何错误。
我分析了堆叠竞争,发现了这个原因:
[INFO] Caused by: java.lang.NoSuchMethodError: com.gwtplatform.dispatch.rest.rebind.events.RegisterGinBindingEvent.postSingleton(Lcom/google/common/eventbus/EventBus;Lcom/gwtplatform/dispatch/rest/rebind/utils/ClassDefinition;Lcom/gwtplatform/dispatch/rest/rebind/utils/ClassDefinition;)
[INFO] at com.gwtplatform.dispatch.rest.delegates.rebind.DelegateGenerator.maybeRegisterGinBinding(DelegateGenerator.java:162)
这指的是两个Class对象之间的调用DelegateGenerator是调用者,它是从以下依赖项中获得的:
<dependency>
<groupId>com.gwtplatform.extensions</groupId>
<artifactId>dispatch-rest-delegates</artifactId>
<version>${gwtp.version}</version>
<scope>provided</scope>
</dependency>
RegisterGinBindingEvent是接收器。它属于这里:
<dependency>
<groupId>com.gwtplatform</groupId>
<artifactId>gwtp-dispatch-rest</artifactId>
<version>${gwtp.version}</version>
<scope>provided</scope>
</dependency>
现在,这发生在DelegateGenerator:的第162行
RegisterGinBindingEvent.postSingleton(eventBus, definition, getClassDefinition());
这应该不是问题,但eventBus作为第一个参数发送的键在两个类中的类型不同。
DelegateGenerator具有以下导入语句:
import com.google.common.eventbus.EventBus;
RegisterGinBindingEvent具有以下EventBus类:
import com.gwtplatform.dispatch.rest.rebind.utils.EventBus;
我想这就是问题的根源。两个依赖项都使用相同的版本(1.5-SNAPSHOT)。如果我将版本降级到1.4,就不会发生这种情况。但是使用此代码运行ResourceDelegate仍然存在问题。
有人知道我做错了什么吗?或者如果这是一个bug?
感谢您使用快照。
出于某种原因,CI没有为上次提交部署快照。现在应该解决这个问题。你能尝试另一个版本吗?在maven命令行中添加-U,以确保获取最新的快照。