3

友人3人とgwt(2.6)でアプリを開発しています。数週間前、スーパー開発モードの使用を開始しました。私たち 2 人が ImageBundles を使用できないことを除いて、すべてがうまく機能します。どうやらいくつかの画像をロードする SuggestBox を含めたいと思ったときに始まりました。GWT コンパイルに失敗しました。私は何度もグーグルで検索しましたが、修正できなかったので、別の作業を開始しました。GWT コンパイルに失敗しました。同じエラー。回避策: ImageResourceBundle を使用せずにイメージをロードします。本当に奇妙なのは、私たちのうちの 2 人は Windows で作業しており、1 人は ubuntu で作業しており、私は mac を使用しています。コンパイルは、ubuntu といずれかの Windows マシンで正常に動作します。他のマシンでは、何を試してもコンパイル エラーは常に同じままです。

Compile with -strict or with -logLevel set to TRACE or DEBUG to see all errors.
   Computing all possible rebind results for 'com.google.gwt.user.client.ui.MenuBar.Resources'
      Rebinding com.google.gwt.user.client.ui.MenuBar.Resources
         Invoking generator com.google.gwt.resources.rebind.context.InlineClientBundleGenerator
            [ERROR] No @com.google.gwt.resources.ext.ResourceGeneratorType was specifed for type com.google.gwt.resources.client.ImageResource or its supertypes
   [ERROR] Errors in 'com/google/gwt/user/client/ui/MenuBar.java'
      [ERROR] Line 212: Failed to resolve 'com.google.gwt.user.client.ui.MenuBar.Resources' via deferred binding
   Computing all possible rebind results for 'com.google.gwt.user.client.ui.impl.ClippedImageImpl.Template'
      Rebinding com.google.gwt.user.client.ui.impl.ClippedImageImpl.Template
         Invoking generator com.google.gwt.safehtml.rebind.SafeHtmlTemplatesGenerator
            Constructing interface com.google.gwt.user.client.ui.impl.ClippedImageImpl.Template
               Generating method body for image()
                  [ERROR] Required annotation @Template not present on interface method public abstract com.google.gwt.safehtml.shared.SafeHtml image(com.google.gwt.safehtml.shared.SafeUri clearImage, com.google.gwt.safecss.shared.SafeStyles style)
   [ERROR] Errors in 'com/google/gwt/user/client/ui/impl/ClippedImageImpl.java'
      [ERROR] Line 104: Failed to resolve 'com.google.gwt.user.client.ui.impl.ClippedImageImpl.Template' via deferred binding
   Computing all possible rebind results for 'com.google.gwt.user.client.ui.impl.ClippedImageImpl.DraggableTemplate'
      Rebinding com.google.gwt.user.client.ui.impl.ClippedImageImpl.DraggableTemplate
         Invoking generator com.google.gwt.safehtml.rebind.SafeHtmlTemplatesGenerator
            Constructing interface com.google.gwt.user.client.ui.impl.ClippedImageImpl.DraggableTemplate
               Generating method body for image()
                  [ERROR] Required annotation @Template not present on interface method public abstract com.google.gwt.safehtml.shared.SafeHtml image(com.google.gwt.safehtml.shared.SafeUri clearImage, com.google.gwt.safecss.shared.SafeStyles style)
   [ERROR] Errors in 'com/google/gwt/user/client/ui/impl/ClippedImageImpl.java'
      [ERROR] Line 96: Failed to resolve 'com.google.gwt.user.client.ui.impl.ClippedImageImpl.DraggableTemplate' via deferred binding
[ERROR] Compiler returned false

どうすればいいのか本当にわかりません。Eclipse と Tomcat のほぼすべての設定/構成ファイルをチェックしました。それはすべて同じです。誰かがどこを見ればいいのか考えていますか? 多分私は間違った場所を探しています。あなたが私に与えることができるどんな助けにも感謝します.

追加情報 (更新) :

  • ant でアプリケーションをビルドすると、gwt-compile はエラーなしで実行されます。
  • GoogleプラグインなしでEclipseを使用しています。
  • 開発モードでは、Web アプリケーションは tomcat7 経由で開始されます。
  • スーパー開発モードは、Web アプリケーション内 (Servlet.init() 内) で呼び出されます。そのため、gwt-dev jar を tomcat ランチャーのクラスパスに追加する必要がありました。
  • gwtnew SuggestBox()ソース コードのどこかにインクルードすると、一部のマシンで gwt-compile-error が発生します。すべてがnew SuggestBox()どこでもコンパイルされます。

クラスパスまたは gwt-compile-sourcepath の問題だと思います。しかし、使用するさまざまなマシンに違いは見られません。

4

3 に答える 3

3

コードが含まれていないため、何が間違っていたのかを推測するのは困難ですが、考えられる理由は次のとおりです。

ゼロ パラメーター コンストラクター

これは、私が読んだ記事で最も多く言及されたものであり (参照は以下に含まれています)、まさにあなたが抱えている問題を引き起こしているようですが、チームメイトの一部だけになぜそれが起こるのか、私にはわかりません。 (特定の VM などで必要になるだけかもしれません)。

(投稿したコンパイラログによると)遅延バインディングの問題である可能性があるため、すべてのPOJO(プレーンオールドJavaオブジェクト)クラスに遅延ロード用のゼロパラメーターコンストラクターがあるかどうかを確認する必要があります。

遅延バインディングによるクラスの解決に失敗しました

競合する注釈

ここで述べたように、いくつかの注釈が間違って配置されている可能性があります。

Uibinder を使用した遅延バインディングで GWT が失敗しました

@UiConstructor や @UiFactory などの一部の注釈はうまく連携せず、(この場合実際には競合していませんが) 同様の問題を引き起こす可能性があります。

リファレンスなど

于 2014-07-24T09:28:28.093 に答える
3

ant でアプリケーションをビルドすると、gwt-compile はエラーなしで実行されます。

1) したがって、コンパイル方法と ant のコンパイル方法を比較すると、根本的な原因がわかります。

2)違いが見られない場合、またはEclipse(または使用するもの)がアプリケーションをコンパイルする方法がわからない場合は、この方法でコンパイルしてみてください(Eclipse、ant、 maven または他のサードパーティの「ヘルパー」 ):

java -cp gwt-dev.jar;gwt-user.jar;validation-api-1.0.0.GA.jar;validation-api-1.0.0.GA-sources.jar;any/other/lib.jar;path/to/your/module/source/code com.google.gwt.dev.Compiler moduleName

.gwt.xml 記述子が com/your/gwt/module/MyModule.gwt.xml の下にある場合はcom.your.gwt.module.MyModulemoduleName

于 2014-07-27T14:59:14.000 に答える
0

Maven を使用している場合は、mvn compile で javac を簡単に実行できます。その後、mvn gwt:compile を実行できます。これらの厄介なエラーはなくなります。

于 2015-01-14T20:53:35.317 に答える