Class 自定义类的GWT延迟绑定失败:没有匹配的类“&引用;在urn中:导入:

Class 自定义类的GWT延迟绑定失败:没有匹配的类“&引用;在urn中:导入:,class,gwt,matching,uibinder,Class,Gwt,Matching,Uibinder,我正在开发两个自定义小部件,希望能够与UiBinder一起使用。不幸的是,我一直在为以下错误而浪费生命: urn:导入中没有与“…”匹配的类: 这似乎是当类中出现阻止GWT编译器处理它的任何错误时抛出的catch all异常。这包括类的整个依赖关系树中的任何内容 为了节省我自己和你们中任何一个遇到同样问题的人一些时间和痛苦,让我们在这里列出最意想不到和最难找到的原因。我将从我最新的一个开始,这使我决定在这里发布它。我编写了一个助手类,这个小部件在其依赖关系树的深处使用它 对于这个助手类,我告诉E

我正在开发两个自定义小部件,希望能够与UiBinder一起使用。不幸的是,我一直在为以下错误而浪费生命:

urn:导入中没有与“…”匹配的类:

这似乎是当类中出现阻止GWT编译器处理它的任何错误时抛出的catch all异常。这包括类的整个依赖关系树中的任何内容


为了节省我自己和你们中任何一个遇到同样问题的人一些时间和痛苦,让我们在这里列出最意想不到和最难找到的原因。我将从我最新的一个开始,这使我决定在这里发布它。

我编写了一个助手类,这个小部件在其依赖关系树的深处使用它

对于这个助手类,我告诉Eclipse自动生成
hashCode()
equals(…)
函数。该类包含一个类型为
double
的字段,Eclipse为该字段生成使用
double.doubleToLongBits()
的代码

原来GWT在其版本的
Double
上没有实现此方法。但当然,如果我在GWT应用程序的Java代码中使用小部件而不是在UiBinder中使用小部件,Eclipse既不会将其检测为可能的编译错误,也不会在开发模式下导致任何问题

3个小时就这样白费了。。。伟大的很高兴看到有用的错误消息

更新:


从GWT 2.5.0(RC1)开始,GWT现在支持将此特定错误作废的
Double.doubleToLongBits()
,但缺少JRE仿真的一般错误机制仍然存在,并且可能会以类似的无帮助方式表现出来。

我编写了一个使用GWT JSON功能的组件,但是没有将com.google.gwt.json.json导入模块


多亏了你的留言,这才花了2个小时

我用的是手机名单:

private static RelationshipViewerUiBinder uiBinder = GWT.create(RelationshipViewerUiBinder.class);

@UiField(provided=true)
CellList<String> prioritisedDisplay;

public RelationshipViewer() {

    prioritisedDisplay = new CellList<>(new TextCell());
    initWidget(uiBinder.createAndBindUi(this));
}
private static RelationshipViewerUiBinder=GWT.create(RelationshipViewerUiBinder.class);
@UiField(提供的=真)
细胞列表显示;
公共关系ShipViewer(){
PrioritizedDisplay=新单元格列表(new TextCell());
initWidget(uiBinder.createAndBindUi(this));
}
注意单元格列表上的Java7样式。尽管我的IDE声明相反,但事实证明,在新调用中确实需要显式地说CellList,否则它将无法编译,而您得到的只是上述错误。顺便说一句,这个问题的存在促使我仔细检查我的代码,可能为我节省了几个小时!这修正了它:

private static RelationshipViewerUiBinder uiBinder = GWT.create(RelationshipViewerUiBinder.class);

@UiField(provided=true)
CellList<String> prioritisedDisplay;

public RelationshipViewer() {

    prioritisedDisplay = new CellList<String>(new TextCell());
    initWidget(uiBinder.createAndBindUi(this));
}
private static RelationshipViewerUiBinder=GWT.create(RelationshipViewerUiBinder.class);
@UiField(提供的=真)
细胞列表显示;
公共关系ShipViewer(){
PrioritizedDisplay=新单元格列表(new TextCell());
initWidget(uiBinder.createAndBindUi(this));
}
我试图在UiBinder.ui.xml中使用,这是不可能的,因为DragAndDropCellTree没有零参数构造函数