我写了一个空的index.jsp,结果还是出现了NullPointerException,生成的jsp clas如下
package org.apache.jsp;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent {  private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();  private static java.util.List _jspx_dependants;  private javax.el.ExpressionFactory _el_expressionfactory;
  private org.apache.AnnotationProcessor _jsp_annotationprocessor;  public Object getDependants() {
    return _jspx_dependants;
  }  public void _jspInit() {
    _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
    _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName());
  }  public void _jspDestroy() {
  }  public void _jspService(HttpServletRequest request, HttpServletResponse response)
        throws java.io.IOException, ServletException {    PageContext pageContext = null;
    HttpSession session = null;
    ServletContext application = null;
    ServletConfig config = null;
    JspWriter out = null;
    Object page = this;
    JspWriter _jspx_out = null;
    PageContext _jspx_page_context = null;
    try {
      response.setContentType("text/html");
      pageContext = _jspxFactory.getPageContext(this, request, response,
       null, true, 8192, true);
      _jspx_page_context = pageContext;
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;    } catch (Throwable t) {
      if (!(t instanceof SkipPageException)){
        out = _jspx_out;
        if (out != null && out.getBufferSize() != 0)
          try { out.clearBuffer(); } catch (java.io.IOException e) {}
        if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
      }
    } finally {
      _jspxFactory.releasePageContext(_jspx_page_context);
    }
  }
}
错误栈
致命的: サーブレット jsp のServlet.service()が例外を投げました
java.lang.NullPointerException
at org.apache.jsp.index_jsp._jspInit(index_jsp.java:22)
at org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52)
at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:159)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)
2008/03/28 9:12:22 org.apache.catalina.core.StandardWrapperValve invoke
致命的: サーブレット jsp のServlet.service()が例外を投げました
java.lang.NullPointerException
at org.apache.jsp.index_jsp._jspInit(index_jsp.java:22)
at org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52)
at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:159)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)
不知原因何在,请大家指教  

解决方案 »

  1.   


    支持其实最笨的方法就是将程序里重要容易出错的东西print log里,然后看看log到底是那里出了问题
      

  2.   

    java.lang.NullPointerException 
    at org.apache.jsp.index_jsp._jspInit(index_jsp.java:22) 
    提示不是很明白吗 index_jsp.java 的22行空指针
    一般来说就是这里getServletConfig().getServletContext()).
    如果getServletConfig() == null
    那么你用getServletConfig().getServletContext()就会出现这个错误
    你可以看看getServletConfig()是不是等于 null
      

  3.   

    哇,日文的能看得懂意思吗?
    debug下在jsp的最顶端,step下去,自然就找到空指针的错误了!
      

  4.   


    整个一废话。有点最基本jsp基础的人那个不知道是这里的getServletConfig()?问题是这些代码是web容器根据jsp编译而得到的,如果jsp正确,根本不会有这种结果出现。而任何jsp代码上的错误都有可能导致这个结果。那么,问题就在jsp代码上了。不给我们看jsp代码,神仙都不知道错误在那里。
      

  5.   

    各位忽略了提问者所说的问题。
    第一、moodoasis建立了一个空的或者是只有HTML代码的JSP页面。
    第二、根据上面的错误信息,应该是在容器当中解析JSP页面的时候出现问题。
          也就是说你就是在JSP当中写Try{}catch(){}也没用。因为页面还在解析。
    所以,问题很奇怪。我也遇到了但是不知道问题出在哪里。
    我的配置:Eclipse 3.3 + MyEclipse 6.01 + Tomcat 6.0 + jdk 1.5.0
    太奇怪了···
    我倒是找到过类似的问题和解决方法,不过貌似没用。http://groups.google.com/group/jabsorb-user/browse_thread/thread/f67b1b50c0d05354大家看一下,一起看看到底哪里的问题。
      

  6.   

    今天也遇到这种问题,现在已解决,原因是昨天拷贝了一个jsp-api.jar的包到WEB-INF/lib目录下,现在删除这个文件即可,估计是拷贝的这个文件跟tomcat有冲突
      

  7.   

    哇哦~~,太厉害了,原因就是手动拷贝了jsp-api.jar包到WEB-INF/lib目录下,谢谢啦~~~
      

  8.   

    谢谢啦,我的问题也解决了。
    jsp-api.jar
      

  9.   

    是的,都是手动加了一个jsp-api.jar的原因。
    这里还有一点要提的是.classpath中
    <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v6.0">
    <attributes>
    <attribute name="owner.project.facets" value="jst.web"/>
    </attributes>
    </classpathentry>
    如果没有则要加上。
      

  10.   

    11楼很厉害,我专程登录回复,我是手动考了一个servlet.jar进去lib,也报了类似的错误,删掉后就好了。
    Servlet.service() for servlet jsp threw exception
    org.apache.jasper.JasperException: Unable to compile class for JSP:再次感谢
      

  11.   

    11楼很厉害,我专程登录回复,我是手动考了一个servlet.jar进去lib,也报了类似的错误,删掉后就好了。 Servlet.service() for servlet jsp threw exception org.apache.jasper.JasperException: Unable to compile class for JSP:  再次感谢
      

  12.   

    真是太有用了!!,getServletConfig().getServletContext()). 这样的问题,就应该是包的问题,11楼说的有用,感谢!!