-1

我无法让 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]

因此,出于某种我无法理解的原因,Web 应用程序正在使用来自 m2 存储库的 jsp jar,即使 pom.xml 中的范围设置为提供。我已经用尽了谷歌搜索。还有哪些其他配置问题可能导致此问题?

4

1 回答 1

1

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

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

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

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

好处是您不必处理插件的变幻莫测,一般来说, stuf 就可以了。据我所知,没有缺点。

于 2013-01-04T22:55:47.120 回答