Tomcat转到.m2目录,查找jsp,servlet等jars和crashes

时间:2013-01-04 22:49:30

标签: eclipse tomcat maven

我无法让Tomcat在启用maven的项目上运行JSP(Eclipse 3.7,Tomcat 6上最新的m2插件,在Eclipse Java EE中作为服务器运行):

java.lang.NullPointerException
    at org.apache.jsp.index_jsp._jspInit(index_jsp.java:22)

此错误表示Tomcat提供的JSP,servlet等jar正在与项目jar冲突。但是看起来所有东西都设置得恰到好处:

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

如果我打开VM上的类跟踪,我发现在启动时,来自Tomcat的lib目录的jsp jar被用于JspFactory:

[Loaded javax.servlet.jsp.JspFactory from file:/C:/tomcat-6.0.28/lib/jsp-api.jar]

当服务器启动并且我已经准备好第一次点击jsp页面时,我得到了不同的结果:

[Loaded javax.servlet.jsp.JspFactory from file:/C:/Users/alice/.m2/repository/javax/servlet/jsp/jsp-api/2.1/jsp-api-2.1.jar]

因此,由于某种原因,我不知道,即使pom.xml中的范围设置为提供,web应用程序也会使用m2 repo中的jsp jar。我已经筋疲力尽谷歌搜索了。 其他配置问题可能导致此问题?

1 个答案:

答案 0 :(得分:1)

在过去几年中,我经常看到与Tomcat Eclipse插件有关的各种与配置相关的问题。

我建议给自己一个巨大的帮助 - 转储插件。运行独立的Tomcat。 这并不难。

将Tomcat配置为指向Eclipse构建的war文件也很容易,因此您不必显式部署它。

设置独立Tomcat实例的调试也很容易。

好处是你不必处理插件的变幻莫测,一般来说,stuf只是有效。据我所知,没有任何缺点。