我无法让 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 中的范围设置为提供。我已经用尽了谷歌搜索。哪些其他配置问题可能导致此问题?
最佳答案
在过去的几年里,我经常看到 Tomcat Eclipse 插件的各种配置相关问题。
我建议你帮自己一个大忙——放弃这个插件。运行独立的 Tomcat。 这并不难。
将 Tomcat 配置为指向 Eclipse 构建的 war 文件也很容易,这样您就不必显式部署它。
设置独立 Tomcat 实例的调试也非常容易。
好处是您不必处理插件的变幻莫测,一般来说,stuf 就可以正常工作。据我所知,没有任何缺点。
关于eclipse - Tomcat 转到 jsp、servlet 等 jar 的 .m2 目录并崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14166286/