1

在我的 servlet 中,我这样做:

request.getRequestDispatcher("/page.jsp").forward(request,response);

我在 Tomcat 6 上得到以下NullPointerException信息,但它在 Tomcat 7 中有效。

SEVERE: Servlet.service() for servlet jsp threw exception java.lang.NullPointerException
    at org.apache.jsp.page_jsp._jspInit(page_jsp.java:23)
    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:313)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    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.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
    at com.dotvocal.poa.vocal.main.servlet.LoadCompany.execute(MyServlet.java:100)
    at com.dotvocal.poa.vocal.main.servlet.LoadCompany.doGet(MyServlet.java:60)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    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:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    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:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Unknown Source)

我还尝试了以下方法:

request.getRequestDispatcher("http://localhost:8080/myapp/page.jsp").forward(request,response);

但这并没有解决问题。

4

2 回答 2

2

java.lang.NullPointerException 在 org.apache.jsp.page_jsp._jspInit(page_jsp.java:23)

您有特定于 servletcontainer 的 JSP 库,例如jsp-api.jar在您的 webapp 中,/WEB-INF/lib或者可能JDK/libJDK/lib/ext.

删除它们。他们根本不属于那里。servlet 容器本身已经随这些库一起提供。根据问题症状,您在 webapp 中使用的那个源自 Tomcat 7,因此当您将其部署到不同的 servletcontainer make/version(例如 Tomcat 6)时,您的 webapp 将无法工作,因为它会与 servletcontainer 自己的冲突图书馆。

错误地将特定于 servletcontainer 的库放置在 webapp 中/WEB-INF/lib是一个经典的初学者错误尝试修复 IDE 项目中的 Servlet API 编译错误。您应该在 IDE 项目中将 servletcontainer 引用为“目标运行时”。

也可以看看:

于 2012-08-30T15:07:06.727 回答
0

我在使用 JBoss 4.3 时遇到了同样的错误,我的解决方案是从我的 JBoss 环境中删除日志、工作和 tmp 文件夹。

于 2015-09-18T11:29:09.997 回答