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
java.lang.NullPointerException at org.apache.jsp.page_jsp._jspInit in Tomcat 6, but works in Tomcat 7
提问by user1611777
In my servlet I do:
在我的 servlet 我做:
request.getRequestDispatcher("/page.jsp").forward(request,response);
I get the following NullPointerException
on 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.jar
in your webapp's /WEB-INF/lib
or maybe JDK/lib
or JDK/lib/ext
.
您有特定jsp-api.jar
于servletcontainer 的 JSP 库,例如在您的 web 应用程序/WEB-INF/lib
或可能JDK/lib
或JDK/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/lib
is 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 文件夹。