我无法让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。我已经筋疲力尽谷歌搜索了。 其他配置问题可能导致此问题?
答案 0 :(得分:1)
在过去几年中,我经常看到与Tomcat Eclipse插件有关的各种与配置相关的问题。
我建议给自己一个巨大的帮助 - 转储插件。运行独立的Tomcat。 这并不难。
将Tomcat配置为指向Eclipse构建的war文件也很容易,因此您不必显式部署它。
设置独立Tomcat实例的调试也很容易。
好处是你不必处理插件的变幻莫测,一般来说,stuf只是有效。据我所知,没有任何缺点。