5

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

urn:import:...中没有匹配“...”的类

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

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

4

4 回答 4

3

因此,我正在使用 CellList:

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));
}

注意 CellList 上的 Java 7 样式 <>。尽管我的 IDE 提出了相反的抗议,但事实证明您确实需要在该新调用中明确地说 CellList< String> ,否则它将无法编译,而您得到的只是上述错误。顺便说一句,谢谢,这个问题的存在促使我仔细检查了我的代码,并且可能为我节省了几个小时!这修复了它:

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));
}
于 2013-09-18T11:44:36.557 回答
2

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

多亏了您在这里的留言,这才花了 2 个小时才付诸东流……

于 2013-04-17T20:22:09.037 回答
1

我写了一个帮助类,这个小部件在它的依赖树深处的某个地方使用。

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

事实证明 GWT 没有在其版本的Double. 但是当然,如​​果我在 GWT-App 的 Java 代码中而不是在 UiBinder 中使用小部件,Eclipse 也不会将其检测为可能的编译错误,也不会在开发模式下导致任何问题。

3 小时耗尽... 太好了... 是的,有用的错误消息。

更新:

从 GWT 2.5.0 (RC1) 开始,GWT 现在支持Double.doubleToLongBits()使这个特定错误过时,但是缺少 JRE 仿真的一般错误机制仍然存在,并且可能会以类似无益的方式表现出来。

于 2012-11-06T03:33:29.710 回答
1

我试图在 UiBinder .ui.xml 中使用GwtQuery DragAndDropCellTree,这是不可能的,因为 DragAndDropCellTree 没有零参数构造函数。

查看更多详情

于 2015-11-18T22:48:52.880 回答