这是Apache Tomcat的标准错误吗?

时间:2013-09-03 10:17:26

标签: java apache jsp tomcat nullpointerexception

我在JSP项目的索引页面访问时收到此错误。

Sep 3, 2013 12:03:14 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [jsp] in context with path [/MyProject] threw exception [java.lang.NullPointerException] with root
cause
java.lang.NullPointerException
    at org.apache.jsp.index_jsp._jspService(index_jsp.java:126)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:619)

我想这是TomCat的“标准错误”,但我无法找出真正的问题。

3 个答案:

答案 0 :(得分:1)

这是你JSP页面中的java.lang.NullPointerException,但我认为你已经想到了这一点。

JSP页面被转换/编译为Java - 因此堆栈跟踪中的(index_jsp.java:126) - 但遗憾的是,您不能使用行号来解决问题,因为它与您的JSP文件无关,但是生成的Java源代码。

但是,您应该能够通过检查找出NPE发生的位置,因为您的JSP当然是一个薄的表示层,正确:-)通常的错误可能是引用了在输入时未提供的属性页面,例如。 request.getParameter( "something" ).equals( "somethingelse" )< - .equals()

上可能的NPE

如果您要共享JSP页面(可能以SSCCE的形式),这个社区可以提供更好的帮助。

干杯,

答案 1 :(得分:0)

这不是“Tomcat标准”错误。它是源代码中的错误。 JSP被转换为java,java.lang.NullPointerException表示你试图使用某个变量而没有正确初始化它。或者你可能已经预料到它会被初始化但是由于某些资源不可用而没有。

答案 2 :(得分:0)

您可以使用行号来查找错误。 (Anders R. Bystrup的答案错误地反映了“......很遗憾,你不能使用行号来解决问题”。)

JSP页面转换为Java是正确的,因此行号与JSP中的行号不对应,但您可以在工作目录中找到转换后的Java文件,如:

${TOMCAT_HOME}/work/Catalina/localhost/_/org/apache/jsp/index_jsp.java  

并查看该文件中给定的行号(126)应指向JSP中的问题(JSP中可能存在相同的行)。

正如其他人已经指出的那样,在这种情况下,你有一个NPE。