8

私のgae + spring + mavenプロジェクトは完璧に機能します。しかし、eclipseを使用して機能させることはできません。

Eclipse から GAE を使用してプロジェクトを実行すると (Google プラグイン、Run As > Web Applicationを使用)、 pom.xmlで宣言されたspring-web依存関係がWEB-INF/libから消えているようです。したがって、spring-webがない場合、これは例外です。

Could not instantiate listener org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

(完全な GAE スタックトレースはこちら)

コンソールから実行するmvn clean package gae:runと、アプリは魅力的に機能し、spring-webは期待どおりWEB-INF/lib ディレクトリの下に配置されます。

テスト プロジェクトを BitBucket で公開しました: https://bitbucket.org/jelies/gae-spring-maven

Eclipse から webapp を起動するときに、 spring-webがWEB-INF/libに公開されない理由は何ですか?


使用:

  • SpringSource ToolSuite 3.1.0 (Eclipse 3.8 ベース)
  • Java 6
  • 春 3.2.1
  • Maven 3.0.4
  • Google App Engine 1.7.5
  • maven-gae-plugin 0.9.6

更新: springバージョン3.1.4.RELEASEを使用すると、 spring-web依存関係がWEB-INF/libに公開されます。これは、3.2.X バージョンでは発生しません。

4

4 に答える 4

2

私の構成 (Eclipse 4.2、WAS 7.0、mvn 3) でこの問題に対する Jira の問題を追加しました: https://jira.springsource.org/browse/SPR-10494

于 2013-04-26T06:47:18.820 に答える
1

これは私のためにそれを修正しました:

  1. Web アプリに含まれている spring-web.jar の場所を見つけます。私の場合は、user.m2\repository\org\springframework\spring-web\4.1.6.RELEASE\spring-web-4.1.6.RELEASE.jar にあります。
  2. spring-web-4.1.6.RELEASE.jar を開きます。7zip
  3. このファイルを jar から削除します: META-INF\web-fragment.xml (7zip でファイルを右クリック -> 削除)
  4. 7zip を閉じて、Eclipse のサーバーで「Publish」を実行します。

詳細: https://jira.spring.io/browse/SPR-10494?focusedCommentId=94572&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-94572

于 2015-07-09T16:50:36.247 に答える
1

.classpath ファイルにエントリがある場合は、<classpathentry kind="output" path="target/classes"/>それを WEB-INF/classes ディレクトリに変更してみてください。私はmaven標準で設定されているので、この行を<classpathentry kind="output" path="src/main/webapp/WEB-INF/classes"/>. これで問題が修正されました(Eclipse Juno、WAS 7、m2eインストールなし)。

また、他の人に当てはまる場合は、私のサーバー (Websphere) で「ワークスペース内のリソースでサーバーを実行する」公開設定を選択していることに言及する必要があります。

この問題は、私がまだ Eclipse のパブリッシングを本当に理解していないことを示していますが、その変更の前に「ワークスペース内」設定を選択すると、リソースが実際に \workspace.metadata.plugins\org.eclipse.wst.server.core にパブリッシュされました。 \tmp0 および WEB-INF\lib に spring-web が含まれていませんでした。ただし、上記の変更により、コードがそのディレクトリに公開されなくなりました。サーバーが必要なバイナリをどのように取得しているかは正確にはわかりませんが、機能しているようです。

補足として/追加のボーナス (おそらく完全に無関係かもしれません) として、JSP に変更を加えたときに、JSP の更新を確認するためにパブリッシュを行う必要がなくなりました。

于 2013-10-02T16:35:34.500 に答える
0

確かに、Eclipse と Maven を使用した Spring 3.2.x は機能しません。Google Eclipse プラグインからアプリケーションを起動すると、 WEB-INF/libspring-webに公開されません。

Spring 3.2.1 および 3.2.2 で試しました。下位バージョンを使用している場合にのみ機能します (現在は 3.1.4 を使用しています)。

于 2013-03-17T12:34:29.700 に答える