maven + eclipse + servlet-api.jar

jwa*_*zko 10 java eclipse maven-2 m2eclipse

我正在使用Eclipse和插件m2eclipse来构建和管理我的项目.在POM中,我包含了servlet-api的条目:

  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <scope>provided</scope>
  </dependency>
Run Code Online (Sandbox Code Playgroud)

提供范围,而不是将.jar文件包含到.war包中(它已由tomcat servlet容器提供).通过mvn install编译是正确的,文件包含在WEB-INF\lib中,部署到tomcat工作正常,程序正常,没关系.

但是,案例在Eclipse内部开始.从eclipse启动我的Web应用程序后,我收到错误:

\ WEB-INF\lib\servlet-api-2.5.jar) - jar未加载.请参阅Servlet规范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目录的路径,在项目内部,自动引用Apache Tomcat v6.0中的库,包括servlet-api.jar.

所以基本上,在从POM删除对servlet-api-2.5.jar的引用之后,该库从Maven Dependencies中消失了,从eclipse启动我的web应用程序时我没有异常.一切都很好......在日食中.

当然没有进入POM内部,这次mvn install会遇到同样的异常,我之前提供过.

有没有办法让它工作而不删除而不是插入引用,这取决于我想做什么:使用maven编译或使用Eclipse运行?

问候

mat*_*t b 5

这个

\ WEB-INF\lib\servlet-api-2.5.jar) - jar未加载.请参阅Servlet规范2.3,第9.7.2节.违规类:javax/servlet/Servlet.class

只是来自应用服务器的一个警告,它忽略了你包含的一个JAR并且不会加载它.可以安全地忽略它.

听起来问题是Eclipse的部分/插件在嵌入式应用服务器中加载您的项目 - 听起来它只是使用依赖项列表作为库路径捆绑的内容,并且没有Maven范围的概念.

我个人会忽略这样的事情 - 你的Maven构建工作正常,在Eclipse中运行应用程序应该可以正常工作除了这个可忽略的警告 - 否则你将不得不走一条调整你的项目的工具,以满足一个工具的需求(网络Eclipse的app插件与另一个(Maven).

(另外我总是发现在Eclipse中运行webapps作为"Web项目"是一个痛苦的屁股,并导致各种奇怪 - 不值得麻烦 - 如果你想在servlet中快速加载你的Maven webapp项目容器,只需使用mvn jetty:runmvn tomcat:run.用IDE进行战斗可能是浪费时间).