2010-07-11 48 views
10

我使用Eclipse和插件m2eclipse来构建和管理我的项目。在POM,我已经包含了servlet的API入口:maven + eclipse + servlet-api.jar

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

范围提供,不包括.jar文件来.WAR包,(它已经被Tomcat servlet容器提供)。编译通过MVN安装正确,文件纳入WEB-INF \ lib中,部署到Tomcat工作,程序工作,它的确定。

但是,这种情况在Eclipse内部开始。从日食开始我的web应用程序后,我收到提示:

\WEB-INF\lib\servlet-api-2.5.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class

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

所以基本上,从POM removeing参考servlet的API-2.5.jar,从Maven依赖该库自败,之后我得到也不例外,而从开始我的Eclipse的Web应用程序。一切都是好......在月食

当然没有进入POM内部,这次mvn安装失败与我之前提供的相同的异常。

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

问候

回答

5

\WEB-INF\lib\servlet-api-2.5.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class

是简单地从它忽略了你的JAR文件包含一个并不会加载它的应用程序服务器的警告。它可以安全地忽略。

听起来像这样的问题是Eclipse的部分/插件将您的项目加载到嵌入式应用程序服务器中 - 听起来像它只是使用依赖关系列表来捆绑作为库路径,并且没有Maven概念范围。

就我个人而言,我会忽略这样的事情 - 你的Maven构建工作正常,在Eclipse中运行应用程序应该工作得很好,除了这个可以忽略的警告 - 否则你将不得不沿着调整你的项目的一个工具的路径期望(Eclipse的Web应用程序插件)与另一个(Maven)。 (也是我一直发现,在Eclipse中运行webapps作为“Web项目”是一个令人头疼的问题,并且会导致各种各样的怪异 - 不值得麻烦 - 如果你想快速加载你的Maven webapp项目在一个servlet容器中,只需使用mvn jetty:runmvn tomcat:run即可。与IDE战斗可能会浪费时间)。