10

GWT コンパイラーがメソッドをコンパイルしないように強制するアノテーション (またはその他の方法) を作成することは可能ですか? app-engine (共有フォルダー内) でも使用するクラスがあり、その中の 1 つのメソッドには、GWT がコンパイルされない原因となるサーバー側のみの関数が必要です。GWT がメソッドを無視するようにしたいのですが (appengine はそうではありません)。

注釈、またはコンパイル前にメソッドを消去するコンパイル前スクリプトのいずれかを考えました。どちらの方法も私にはうまくいきますが、Eclipse IDE でコンパイルできれば最高です。

他の誰かがこれを考えたり試したりしましたか?

4

2 に答える 2

14

今までではない。ごく最近、このような注釈が追加されまし@com.google.gwt.core.shared.GwtIncompatible("Description why...")た。クラスまたはメソッドに適用できます。

しかし、パッチを適用したコードはまだリリースされていません! 正式なステータスはFixedNotReleasedです。個人的に確認できますが、現在の GWT 2.5.1 バージョンではありません。今後の 2.5.2 に期待しています。

見る:

http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/src/com/google/gwt/core/shared/GwtIncompatible.java?spec=svn11570&r=11570

http://code.google.com/p/google-web-toolkit/issues/detail?id=3769

https://gwt-review.googlesource.com/#/c/2320/

にはすでに同様の注釈がありますがcom.google.gwt.thirdparty.guava.common.annotations.GwtIncompatiblegwt-dev.jar機能しません。コンパイラは、互換性のないメソッドを共有クラスでコンパイルしようとしています。

于 2013-06-07T17:39:30.247 に答える
7

GWT バージョン 2.6 より前では、GWT コンパイラーにメソッドを無視させるアノテーションはありません。GWT イシュー トラッカーにリクエストがあり、どうやら 2.6 リリースが予定されているようです。

回避策の 1 つは、「問題のある」メソッドを独自のクラスに配置し、.gwt.xmlファイル内のそのクラスを無視することです。

<source path="gwtclient">
   <exclude name="AppEngineOnlyClass.java" />
   ...
</source>
...

それが少し役立つことを願っています。

乾杯、

于 2012-11-01T21:17:21.210 に答える