我正在开发一些我希望能够与UiBinder一起使用的自定义小部件。不幸的是,我继续浪费我的生命,追逐以下错误:
在urn中没有匹配“...”的类:import:...
这似乎是在类中阻止GWT编译器处理它的任何错误时抛出的全部异常。这包括类的整个依赖树中的任何内容。
为了保存我自己以及遇到同样问题的任何人一些时间和痛苦,让我们在这里编制一个最意想不到且难以找到原因的列表。我将从我的最新版开始,这让我决定在这里发布。
答案 0 :(得分: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));
}
请注意Java 7样式&lt;&gt;在CellList上。尽管我的IDE遭到了相反的抗议,但事实证明你需要明确说出CellList&lt;串GT;在那个新的调用,或者它不会编译,所有你得到的是上面提到的错误。谢谢顺便说一句,这个问题的存在促使我仔细检查我的代码,并且可能节省了我几个小时!这修好了它:
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));
}
答案 1 :(得分:2)
我编写了一个使用GWT JSON功能的组件,但没有将com.google.gwt.json.JSON导入模块。
感谢您的留言,这只耗时2小时......
答案 2 :(得分:1)
我写了一个帮助类,这个小部件在其依赖树的深处使用。
对于这个助手类,我告诉Eclipse自动生成hashCode()
和equals(...)
函数。该类包含一个类型为double
的字段,Eclipse为其生成使用Double.doubleToLongBits()
的代码。
结果发现GWT没有在其Double
版本上实现此方法。但是,当然,Eclipse也没有将此检测为可能的编译错误,如果我在GWT-App的Java代码中使用小部件而不是在UiBinder内部,它也不会在开发模式中引起任何问题。
耗时3小时......太棒了......对于有用的错误消息,你可以。
更新:
从GWT 2.5.0(RC1)开始,GWT现在支持Double.doubleToLongBits()
使这个特定错误过时,但缺少JRE仿真的一般错误机制仍然存在,并且可能会以同样无益的方式表现出来的
答案 3 :(得分:1)
我试图在UiBinder .ui.xml中使用GwtQuery DragAndDropCellTree,这是不可能的,因为DragAndDropCellTree没有零参数构造函数。