10

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

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

提供范围,不包括 .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 依赖项(包括 javac-servlet-2.5.jar)作为Java EE Module Dependencies包含在内,并且应该放在WEB-INF\lib 文件夹中,同时从 eclipse 开始。另一方面,在 eclipse 中,我提供了 apache tomcat 目录的路径,在项目内部,自动引用了Apache Tomcat v6.0中的库,包括servlet-api.jar

所以基本上,在从 POM 中删除对 servlet-api-2.5.jar 的引用后,该库从Maven Dependencies中消失,从 Eclipse 启动我的 Web 应用程序时我也没有例外。一切都很好……在 eclipse 中

当然,没有进入 POM,这次mvn install 失败,同样的异常,我之前提供过。

有什么方法可以让它在不删除和插入引用的情况下工作,这取决于我想要做什么:使用 maven 编译或使用 Eclipse 运行?

问候

4

2 回答 2

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 的应用程序插件)与另一个(Maven)。

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

于 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 回答