1

我在访问我的 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 的“标准错误”,但我不知道真正的问题是什么。

4

3 回答 3

1

java.lang.NullPointerException在您的 JSP 页面中,但我认为您已经知道了。

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

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

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

干杯,

于 2013-09-03T10:29:16.220 回答
0

这不是“Tomcat 标准”错误。它在您的源代码中存在错误。JSP 被翻译成 java 并java.lang.NullPointerException表示您在某个地方尝试使用某个变量而没有正确初始化它。或者您可能期望它会被初始化,但由于某些资源不可用,它没有被初始化。

于 2013-09-03T11:49:14.827 回答
0

您可以使用行号来查找错误。(Anders R. Bystrup 的回答错误地相反“......不幸的是,您不能使用行号来解决问题”。)

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

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

并查看该文件中给定的行号 (126) 应该指出您的 JSP 中的问题(您的 JSP 中可能会有相同的行)。

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

于 2015-05-15T20:53:25.893 回答