10

私はプラグイン m2eclipse と共に Eclipse を使用して、プロジェクトをビルドおよび管理しています。POM に、servlet-api のエントリを含めました。

  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <scope>provided</scope>
  </dependency>

.jar ファイルを .war パッケージに含めるのではなく、スコープが提供されます (Tomcat サーブレット コンテナーによって既に提供されています)。mvn installによるコンパイルは正しく、ファイルはWEB-INF\libに含まれていません。Tomcat へのデプロイは機能しており、プログラムは機能しており、問題ありません。

しかし、事件はEclipseの中で始まります。Eclipse から Web アプリケーションを起動した後、次のエラーが発生します。

\WEB-INF\lib\servlet-api-2.5.jar) - jar がロードされていません。サーブレット仕様 2.3 のセクション 9.7.2 を参照してください。問題のあるクラス: javax/servlet/Servlet.class

Maven Dependencies (javac-servlet-2.5.jar を含む) はJava EE Module Dependenciesとして含まれており、Eclipse から開始するときに WEB-INF\lib フォルダー内に配置する必要があるため、理由はわかりません。一方、Eclipse では、Apache Tomcat ディレクトリへのパスを提供しました。プロジェクト内には、servlet-api.jarを含むApache Tomcat v6.0からのライブラリへの自動参照があります。

したがって、基本的に、POM から servlet-api-2.5.jar への参照を削除した後、そのライブラリはMaven Dependenciesから消え、Eclipse からWeb アプリを起動しても例外は発生しません。すべてが順調です...日食で

もちろん、POM 内にエントリがないと、今回はmvn installが同じ例外で失敗します。以前に提供しました。

私がやりたいことに応じて、参照を削除したり挿入したりせずに動作させる方法はありますか: maven でコンパイルするか、Eclipse で実行しますか?

よろしく

4

2 に答える 2

5

これ

\WEB-INF\lib\servlet-api-2.5.jar) - jar がロードされていません。サーブレット仕様 2.3 のセクション 9.7.2 を参照してください。問題のあるクラス: javax/servlet/Servlet.class

これは、含まれている JAR の 1 つが無視され、ロードされないというアプリ サーバーからの単なる警告です。無視しても問題ありません。

問題は、プロジェクトを組み込みアプリ サーバーにロードする Eclipse の部分/プラグインにあるようです。依存関係のリストをライブラリ パスとしてバンドルするものとして使用するだけで、Maven スコープの概念がありません。

個人的には、このようなものは無視します - あなたの Maven ビルドは正常に動作しています。Eclipse 内でアプリを実行すると、この無視できる警告以外は正常に動作するはずです。 Eclipse 用の app プラグイン) と別のプラグイン (Maven) を比較します。

(また、Eclipse 内で Web アプリケーションを「Web プロジェクト」として実行することは面倒であり、Maven Web アプリケーション プロジェクトをサーブレットにすばやくロードしたい場合は、あらゆる種類の奇妙なことにつながります。手間をかける価値はありません)。 IDE との戦いは時間の無駄になる可能mvn jetty:run性がありますmvn tomcat:run)。

于 2010-07-11T17:22:53.013 に答える
0

「 Maven Integration for WTP 」という名前のプラグインをインストールすると、この問題を完全に解決できます。

リポジトリ URL: http://download.jboss.org/jbosstools/updates/m2eclipse-wtp/

于 2013-07-24T02:10:44.820 に答える