Tomcat 6 中 org.apache.jsp.page_jsp._jspInit 处的 java.lang.NullPointerException,但适用于 Tomcat 7

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/12199396/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-31 08:01:09  来源:igfitidea点击:

java.lang.NullPointerException at org.apache.jsp.page_jsp._jspInit in Tomcat 6, but works in Tomcat 7

javajsptomcatservlets

提问by user1611777

In my servlet I do:

在我的 servlet 我做:

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

I get the following NullPointerExceptionon Tomcat 6, but it works in Tomcat 7.

NullPointerException在 Tomcat 6 上得到以下内容,但它在 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)

I also tried the following:

我还尝试了以下方法:

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

But it didn't solve the problem.

但这并没有解决问题。

回答by BalusC

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

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

You have servletcontainer-specific JSP libraries such as jsp-api.jarin your webapp's /WEB-INF/libor maybe JDK/libor JDK/lib/ext.

您有特定jsp-api.jar于servletcontainer 的 JSP 库,例如在您的 web 应用程序/WEB-INF/lib或可能JDK/libJDK/lib/ext.

Removethem. They don't belong there at all. The servletcontainer itself already ships with those libraries. Based on the problem symptoms, the one which you've in your webapp originated from Tomcat 7 and thus your webapp will fail to work when you deploy it to a different servletcontainer make/version such as Tomcat 6, because it would conflict with servletcontainer's own libraries.

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

Erroneously placing servletcontainer-specific libraries in webapp's /WEB-INF/libis a classic starter's mistake in a wrong attempt to fix Servlet API compilation errors in the IDE project. You should instead reference the servletcontainer as "target runtime" in the IDE project.

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

See also:

也可以看看:

回答by Fede Gratti

I had the same error using JBoss 4.3, my solution was deleting the log, work and tmp folder from my JBoss enviroment.

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