java.lang.NullPointerException в org.apache.jsp.foo_jsp._jspInit (foo_jsp.java:22) - PullRequest
5 голосов
/ 03 февраля 2011

У меня есть приложение Spring 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 Ответ

22 голосов
/ 03 февраля 2011
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), вы никогда не должны их трогать и не иметь их дубликаты или другой контейнер-сервлет в любом месте вашего пути к классам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...