我无法让 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 中的范围设置为提供。我已经用尽了谷歌搜索。还有哪些其他配置问题可能导致此问题?