java.lang.NullPointerException в org.apache.jsp.foo_jsp._jspInit(foo_jsp.java:22)
У меня есть весеннее приложение MVC с фиктивной страницей JSP (с именем htmlcontent.jsp). 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";
}
}
Боб добавлен в мой springapp-web.xml
<bean id="htmlcontent" class="springapp.web.HtmlContentController">
И отображение сервлета в моем web.xml определяется следующим образом:
<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'
Так что я думаю, это должен быть правильный файл журнала. Может кто-нибудь подсказать мне, что я делаю не так? И почему трассировка стека с нулевым указателем отсутствует в файле журнала?
1 ответ
java.lang.NullPointerException
org.apache.jsp.htmlcontent_jsp._jspInit(htmlcontent_jsp.java:22)
NPE в _jspInit()
Этот метод указывает на загрязнение пути к классам в библиотеках JSP другого и более старого версий сервлет-контейнера, чем тот, который вы используете в данный момент.
Чтобы это исправить, вам нужно убедиться, что у вас нет каких-либо специфичных для servletcontainer библиотек, таких как jsp-api.jar
, servlet-api.jar
, el-api.jar
и т. д. в вашем веб-приложении /WEB-INF/lib
и, конечно, не в JRE JRE/lib
а также JRE/lib/ext
,
Специальные библиотеки Servletcontainer принадлежат самому сервлетконтейнеру (в Tomcat 6 они находятся внутри Tomcat/lib
папку), вы не должны когда-либо прикасаться к ним и не иметь дубликатов их или другой контейнер сервлетов в любом месте вашего пути к классам.