maven + eclipse + servlet-api.jar

时间:2010-07-11 17:12:49

标签: 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>

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

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

  

\ WEB-INF \ lib \ servlet-api-2.5.jar) -   罐子没装。请参阅Servlet规范2.3,   第9.7.2节。违规课程:   的javax / servlet的/ Servlet.class

我不知道为什么,因为 Maven Dependencies (包括javac-servlet-2.5.jar)包含在 Java EE模块依赖性中,并且应该推入WEB-INF \ lib文件夹,同时从eclipse开始。另一方面,在eclipse中我提供了到我的apache tomcat目录的路径,在项目内部,有来自 Apache Tomcat v6.0 的库的自动引用,包括 servlet-api.jar 即可。

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

当然没有在POM中输入,这次 mvn install failes 具有相同的异常,我之前提供过。

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

此致

2 个答案:

答案 0 :(得分: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的Web应用程序插件)与另一个(Maven)。

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

答案 1 :(得分:0)

安装名为“ Maven Integration for WTP ”的插件,它可以完全解决这个问题。

存储库网址: http://download.jboss.org/jbosstools/updates/m2eclipse-wtp/