2012-03-30 2 views
0

GWTコンパイラに問題があります。私は私のエンティティクラスに次のメソッドを追加する場合:GWTとReflectionToStringBuilder.toString()

ERROR: Deferred binding failed for 'com.mvp4g.client.Mvp4gModule'; expect subsequent failures 
ERROR: Unable to load module entry point class plaut.wimc.avl.admin.client.Admin (see associated exception for details) 
java.lang.RuntimeException: Deferred binding failed for 'com.mvp4g.client.Mvp4gModule' (did you forget to inherit a required module?) 

私はそれを削除すると、すべてが正常に動作します:

@Override 
public String toString() { 
    return ReflectionToStringBuilder.toString(this, ToStringStyle.SHORT_PREFIX_STYLE); 
} 

コンパイラは私に次のエラーが発生しました。なぜコンパイラにこのようなエラーを与えたのかわかりません。このtoStringメソッドはroo IDTでも使用されていますが、このようなエラーはありません。

答えて

1

JavaScriptでコンパイルできるすべてのJavaコードが必要です。 ReflectionToStringBuilderはJavaScriptで使用できないリフレクションを使用するため、このメソッドはクライアントサイドのコードでは使用できません。

このコンパイルエラーは、すべてのJavaコードがGWTモジュールファイルのpathパラメータを介してGWT copmilerによってアクセスされ、ソース形式で利用可能でなければならないという事実を指します。この場合、コンパイラはReflectionToStringBuilderメソッドのソースを見つけることができないため、GWTモジュールファイルが存在しないため、エラーになります。このような場合にこのようなファイルを作成してソースを追加することはできますが、リフレクションは機能しないため動作しません。

+0

私は理解しますが、それはどのように可能ですか? aspectJコンパイラがこの関数を変換すると思いますか? – user1289877

+0

このクラスはサーバーサイドコードでのみ使用できますか?それはうまくいくでしょう。 –

0

ReflectionToStringBuilderに問題があるようです。それはGWTモジュールですか?はいの場合、プロジェクトの* .gwt.xmlに継承されたモジュールを追加する必要があります

+0

いいえGWTモジュールではありません。そのApacheのアーティファクト:org.apache.common:commons-lang3 – user1289877

+1

@ user1289877 https://developers.google.com/web-toolkit/doc/latest/DevGuideCodingBasicsClient(非常に最初の段落、特にその最後の文) –

+0

GWTでcommons-langを使用することはできないと思います。 gwt-commons-lang(http://code.google.com/p/gwt-commons-lang/)プロジェクトがあります。しかし、私はその中に何の活動も見ません。また、GWTプロジェクトではcommons-langを使用できないという古いグループ(http://groups.google.com/group/Google-Web-Toolkit/msg/dead7dd8032aae1f?pli=1)がGoogleグループにありますクライアント側。 –