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

私はUiBinder .ui.xmlで GwtQuery DragAndDropCellTreeを使用しようとしていましたが、DragAndDropCellTree にはゼロ引数のコンストラクターがないため、これは不可能でした。

詳細を見る

于 2015-11-18T22:48:52.880 に答える
1

このウィジェットが依存関係ツリーの奥深くで使用するヘルパー クラスを作成しました。

このヘルパー クラスでは、関数hashCode()equals(...)関数を自動生成するように Eclipse に指示しました。クラスには、doubleを使用するコードを Eclipse が生成するタイプ のフィールドが含まれていましたDouble.doubleToLongBits()

GWT は、そのバージョンの でこのメソッドを実装していないことがわかりましたDouble。しかしもちろん、Eclipse はこれをコンパイル エラーの可能性として検出したり、UiBinder 内ではなく GWT アプリの Java コード内でウィジェットを使用した場合に開発モードで問題を引き起こしたりしません。

無駄に 3 時間... すばらしい... 役立つエラー メッセージが表示されました。

アップデート:

GWT 2.5.0 (RC1) の時点で、GWT はDouble.doubleToLongBits()この特定のエラーの廃止をサポートするようになりましたが、JRE エミュレーションが見つからないという一般的なエラー メカニズムは残っており、同様に役に立たない方法で現れる可能性があります。

于 2012-11-06T03:33:29.710 に答える