2011-02-03 17 views
5

Tengo la aplicación mvc de primavera con la página dummy jsp (llamada htmlcontent.jsp). El jsp contiene solo una cadena:java.lang.NullPointerException en org.apache.jsp.foo_jsp._jspInit (foo_jsp.java:22)

HalloText 

y este es todo el contenido de la jsp. El controlador se ve de la siguiente manera:

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"; 
    } 
} 

se añade el frijol en mi springapp-web.xml

<bean id="htmlcontent" class="springapp.web.HtmlContentController"> 

Y la correlación de servlet en mi web.xml se define de la siguiente manera:

<servlet-mapping> 
    <servlet-name>springapp</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
</servlet-mapping> 

cuando llamo siguiente:

http://localhost:8080/spring-mvc-hsqldb/htmlcontent.htm 

entonces consigo una 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. 

En catalina.out no hay ninguna traza de la pila para este error. Cuando trato de cambiar la URL para http://localhost:8080/spring-mvc-hsqldb/htmlcondsasdadastent.htm, entonces me sale:

WARNUNG: No mapping found for HTTP request with URI [/spring-mvc-hsqldb/htmlcondsasdadastent.htm] in DispatcherServlet with name 'springapp' 

por lo que creo que debe ser el archivo de registro correcto. ¿Puede alguien darme una pista, qué estoy haciendo mal? ¿Y por qué el seguimiento de la pila del puntero nulo no está en el archivo de registro?

+0

qué versión de tomcat es esto? – skaffman

+0

Si marca el controlador con @Controller, entonces no necesita registrar el bean en springapp-web.xml. ¿Puedes publicar cómo has configurado tu View Resolver? Y creo que la URL que debe usar es http: // localhost: 8080/htmlcontent.htm en lugar de la que está usando. – Javi

+1

cuando llamo localhost: 8080/htmlcontent.htm, obtengo el error 404 (El recurso solicitado (/htmlcontent.htm) no está disponible. ") – cupakob

Respuesta

21
java.lang.NullPointerException 
    org.apache.jsp.htmlcontent_jsp._jspInit(htmlcontent_jsp.java:22) 

Un NPE de _jspInit() método indica contaminación ruta de clases con las bibliotecas JSP de un servletcontainer versionado diferente y mayor que la que actualmente se está ejecutando.

Para solucionar este problema, es necesario asegurarse de que lo haga no tiene ningún bibliotecas específicas servletcontainer como jsp-api.jar, servlet-api.jar, el-api.jar, etc en la /WEB-INF/lib y para asegurarse de que su aplicación web no en JRE de JRE/lib y JRE/lib/ext.

Las bibliotecas específicas de Servletcontainer pertenecen al servletcontainer (en Tomcat 6, están dentro de la carpeta Tomcat/lib), nunca debe tocarlas y no tener duplicados de ellas o un servletcontainer diferente en cualquier parte de su classpath.

+0

ese fue el problema ... :) gracias – cupakob

+0

De nada. – BalusC

+1

extraño que su plantilla incluye este jar's. Tuve que eliminarlos de pom.xml para hacerlo funcionar – Fixus

Cuestiones relacionadas