org.apache.jsp.foo_jsp._jspInit(foo_jsp.java:22) 处的 java.lang.NullPointerException
Posted
技术标签:
【中文标题】org.apache.jsp.foo_jsp._jspInit(foo_jsp.java:22) 处的 java.lang.NullPointerException【英文标题】:java.lang.NullPointerException at org.apache.jsp.foo_jsp._jspInit(foo_jsp.java:22) 【发布时间】:2011-06-20 15:33:27 【问题描述】:我有带有虚拟 jsp 页面(名为 htmlcontent.jsp)的 spring mvc 应用程序。 jsp 只包含一个字符串:
HalloText
这就是jsp的全部内容。控制器如下所示:
package springapp.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HtmlContentController
@RequestMapping("/htmlcontent.htm")
public String view()
return "htmlcontent";
bean 被添加到我的 springapp-web.xml 中
<bean id="htmlcontent" class="springapp.web.HtmlContentController">
我的 web.xml 中的 servlet 映射定义如下:
<servlet-mapping>
<servlet-name>springapp</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
当我拨打以下电话时:
http://localhost:8080/spring-mvc-hsqldb/htmlcontent.htm
然后我得到一个 NullPointerException:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:536)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:368)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
java.lang.NullPointerException
org.apache.jsp.htmlcontent_jsp._jspInit(htmlcontent_jsp.java:22)
org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:164)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:338)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.30 logs.
在 catalina.out 中没有针对此错误的任何堆栈跟踪。当我尝试将 URL 更改为 http://localhost:8080/spring-mvc-hsqldb/htmlcondsasdadastent.htm
时,我得到:
WARNUNG: No mapping found for HTTP request with URI [/spring-mvc-hsqldb/htmlcondsasdadastent.htm] in DispatcherServlet with name 'springapp'
所以我认为,那一定是正确的日志文件。有人可以给我一个提示,我做错了什么?为什么日志文件中没有空指针堆栈跟踪?
【问题讨论】:
这是哪个版本的tomcat? 如果使用@Controller 标记控制器,则无需在springapp-web.xml 中注册bean。你能发布你是如何配置你的视图解析器的吗?而且我认为您必须使用的网址是localhost:8080/htmlcontent.htm,而不是您正在使用的网址。 当我调用 localhost:8080/htmlcontent.htm 时,我得到 404 错误(请求的资源 (/htmlcontent.htm) 不可用。") 【参考方案1】:java.lang.NullPointerException
org.apache.jsp.htmlcontent_jsp._jspInit(htmlcontent_jsp.java:22)
_jspInit()
方法中的 NPE 表示类路径被 JSP 库污染,而 JSP 库的版本与您当前运行的 servlet 容器不同。
要解决此问题,您需要确保在您的 web 应用程序的 /WEB-INF/lib
和确定不在 JRE 的 JRE/lib
和 JRE/lib/ext
中。
Servletcontainer 特定的库属于 servletcontainer 本身(在 Tomcat 6 中,它们位于 Tomcat/lib
文件夹中),您不应该触摸它们,并且在类路径中的任何地方都不能有它们的副本或不同的 servletcontainer。
【讨论】:
奇怪的是sts模板包含这个jar`s。我必须从 pom.xml 中删除它们才能使其正常工作 @BalusC ,有没有博客说明如何使用和导入 servletcontainer 特定库和 servletcontainer 独立库?例如,导入 javax.servlet:javax.servlet-api:3.1 jar,它是独立的 jar,只在提供的 socpe 中制作,但 servlet-api.jar 等效/替换 servletcontainer 特定库中的那个?有没有比较的图表/表格列表?以上是关于org.apache.jsp.foo_jsp._jspInit(foo_jsp.java:22) 处的 java.lang.NullPointerException的主要内容,如果未能解决你的问题,请参考以下文章