0

私はGWTをMavenと一緒に使用してきましたが、何をしようとしても、Eclipse はソース コードを通常のwebapp/WEB-INF/classesフォルダーに自動的にコンパイルしたくありません。GWT-Platformのgwtp-sample-basicサンプルを使用して問題を再現してみました。ここで見つけることができます: gwtp-samples-0.6.zip

クラスを使用せずに Jetty を介してプロジェクトをデプロイおよび実行すると、次の予期されるエラーが発生します。

[WARN] Could not instantiate listener example.project.server.MyGuiceServletContextListener
java.lang.ClassNotFoundException: example.project.server.MyGuiceServletContextListener
...
[WARN] EXCEPTION 
java.lang.ClassNotFoundException: com.google.inject.servlet.GuiceFilter
...
[WARN] failed guiceFilter: javax.servlet.UnavailableException: com.google.inject.servlet.GuiceFilter
...
[WARN] Failed startup of context com.google.apphosting.utils.jetty.DevAppEngineWebAppContext@aec7ab1{/,/home/user/Documents/Workspace/project/src/main/webapp}
javax.servlet.UnavailableException: com.google.inject.servlet.GuiceFilter
...

Ant を使用すると、クラスは正しいフォルダーwebapp/WEB-INF/classesにビルドされますが、これまでに試した Maven 構成では失敗します。

  • これはMaven固有のものでしょうか?
  • Eclipse で設定するのを忘れた可能性があるものはありますか?
  • 同様の問題があり、それらを修正する方法を見つけた人はいますか?

補足: Eclipse 用のデフォルトの Sonatype Maven プラグインを使用します。また、webAppCreator ツールを使用して Maven プロジェクトを再初期化しようとしましたが、結果は変わりませんでした。提供されたデフォルトの実行構成を使用します。webapp/WEB-INF/lib には、必要なライブラリが自動的に含まれます。

4

1 に答える 1

1

Maven は通常、コンパイルするとtarget/classes. Maven で WAR を構築すると、Maven はそこからクラスをコピーするため、最終的に WAR の適切な場所に配置されます。

質問は次のとおりです。「プロジェクトを実行する」とはどういう意味ですか? 通常、これは WAR を構築して展開することを意味します。そうすれば、すべてがうまくいくはずです。

かなり時間がかかるため、この作業は避けたいと思います。しかし、プロジェクトをどのように設定し、どのように「実行」したか (どのコンテナー、どのプラグインを使用するかなど) を具体的に教えていただけない限り、お役に立てません。

[編集]あなたの主な問題はおそらく、クラスパスが Jetty にどのように渡されるか、それを尊重するか独自のものを構築するかです。

「M2Eclipse および Google Eclipse プラグインのおかげで、Eclipse にうまく統合できる」と書かれているGWT Maven プラグインを参照してください。

また、このブログ投稿が役立つ場合があります。

于 2011-07-06T15:05:50.937 に答える