java.lang.NullPointerException at org.apache.jsp.foo_jsp._jspInit(foo_jsp.java:22)
J'ai spring mvc de l'application avec des feintes de page jsp (nommé htmlcontent.jsp). La jsp contient une chaîne de caractères:
HalloText
et c'est la totalité du contenu de la page jsp. Le contrôleur ressemble comme suit:
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";
}
}
Le haricot est ajouté dans mon springapp-web.xml
<bean id="htmlcontent" class="springapp.web.HtmlContentController">
Et le mappage des servlets dans mon web.xml est défini comme suit:
<servlet-mapping>
<servlet-name>springapp</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
Quand je l'appelle suivantes:
http://localhost:8080/spring-mvc-hsqldb/htmlcontent.htm
puis-je obtenir une 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.
Dans catalina.hors il n'y a pas trace de la pile pour cette erreur. Lorsque je tente de changer l'URL de http://localhost:8080/spring-mvc-hsqldb/htmlcondsasdadastent.htm
, puis-je obtenir:
WARNUNG: No mapping found for HTTP request with URI [/spring-mvc-hsqldb/htmlcondsasdadastent.htm] in DispatcherServlet with name 'springapp'
Je pense, que doit être le bon fichier journal. Quelqu'un peut-il me donner un indice, ce que je fais mal? Et pourquoi le pointeur null trace de pile pas dans le fichier de log?
- la version de tomcat est-ce?
- Si vous marquez le contrôleur avec @Contrôleur, alors vous n'avez pas besoin de vous inscrire le haricot springapp-web.xml. Vous pouvez poster la façon dont vous avez configuré votre avis de résolution? Et je pense que l'url que vous devez utiliser est localhost:8080/htmlcontent.htm à la place de celle que vous utilisez.
- quand je l'appelle localhost:8080/htmlcontent.htm puis-je obtenir de l'Erreur 404 (La ressource demandée (/htmlcontent.htm n'est pas disponible.")
Vous devez vous connecter pour publier un commentaire.
Un NPE dans
_jspInit()
méthode indique classpath de la pollution avec JSP bibliothèques de différents et plus de version servletcontainer que celui que vous utilisez actuellement.Pour résoudre ce problème, vous devez vous assurer que vous ne pas ont tout servletcontainer bibliothèques spécifiques tels que
jsp-api.jar
,servlet-api.jar
,el-api.jar
, etc dans votre webapp est/WEB-INF/lib
et pour sûr, pas dans la JREJRE/lib
etJRE/lib/ext
.Servletcontainer spécifiques des bibliothèques appartiennent à la servletcontainer lui-même (dans Tomcat 6, ils sont à l'intérieur de la
Tomcat/lib
dossier), vous ne devriez jamais les toucher et de ne pas avoir des doublons ou un autre servletcontainer n'importe où dans votre classpath.