私はプラグイン 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 で実行しますか?
よろしく