首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >工厂“无法创建或继承绑定”的GIN AssistedInject问题

工厂“无法创建或继承绑定”的GIN AssistedInject问题
EN

Stack Overflow用户
提问于 2013-05-01 09:22:25
回答 1查看 4.1K关注 0票数 3

我收到了一个奇怪的错误,当我使用辅助注射时,我无法克服这个错误:

代码语言:javascript
运行
复制
[DEBUG] [project] - Rebinding com.gwtplatform.mvp.client.DesktopGinjector
[DEBUG] [project] - Invoking generator com.google.gwt.inject.rebind.GinjectorGenerator
    [ERROR] [project] - Factory com.jorsek.editor.gin.EditorClientFactory could not be created
    [ERROR] [project] - Error injecting com.jorsek.editor.gin.EditorClientFactory: Unable to create or inherit binding: No @Inject or default constructor found for com.jorsek.editor.gin.EditorClientFactory

所需节点的路径:

com.projectname.client.application.resourceworkspace.ResourceWorkspacePresenter的com.projectname.client.application.resourceworkspace.ResourceWorkspacePresenter com.gwtplatform.mvp.client.gin.AbstractPresenterModule.bindPresenter(AbstractPresenterModule.java:122) -> com.jorsek.editor.gin.EditorClientFactory @Inject构造函数

下面是我如何设置所有内容:

我的工厂:

代码语言:javascript
运行
复制
public interface EditorClientFactory {

/**
 * Create a new DOMModel via assisted injection initializing the model 
 * with the document entity and it's DOM document content.
 * 
 * @param document
 * @param domDocument
 * @return
 */
public DOMModel create(Entity document, Document domDocument);
}

我的模块:

代码语言:javascript
运行
复制
public class EditorClientModule extends AbstractGinModule {

@Override
protected void configure() {

    install(new GinFactoryModuleBuilder().build(EditorClientFactory.class));

    bind(DOMModel.class).to(SyncedDOMModel.class);
}

}

com.jorsek.editor.impl.SyncedDOMModel:

代码语言:javascript
运行
复制
public class SyncedDOMModel implements DOMModel {



@Inject
private SyncedDOMModel(){} /* For GIN/GUICE */

@AssistedInject
public SyncedDOMModel(CollabClient client, CollabClientFactory collabFactory, @Assisted Entity ref, @Assisted Document domDoc){
    }
}

这就是我试图将我的工厂注入使用的方式:

代码语言:javascript
运行
复制
@AssistedInject
public ResourceWorkspacePresenter(final EventBus eventBus, final MyView view, final MyProxy proxy, APIService apiService, EditorClientFactory editorFactory, @Assisted EntityLocator entityLocator) {
    super(eventBus, view, proxy, ApplicationPresenter.TYPE_SetMainContent);


    this.editorFactory = editorFactory;
    this.apiService = apiService;
     System.out.println("E Locator: " + entityLocator);

}

这就是我试图使用我的工厂的方式(尽管永远不会走到这一步):

代码语言:javascript
运行
复制
editorFactory.create(doc, domDoc);

有没有人知道为什么会发生这种情况?

我正在使用GWTP RC2,如果有帮助的话。

谢谢,

凯西

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-01 17:07:43

你的代码不正确(我不知道它是否能解决你的问题,但这是一个开始):你不应该bind(DOMModel.class),而应该告诉工厂:

代码语言:javascript
运行
复制
install(new GinFactoryModuleBuilder()
    .implement(DOMModel.class, SyncedDOMModel.class)
    .build(EditorClientFactory.class));
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16311419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档