Web crash:The method getDispatcherType() is undefined for the type HttpServletRequest

来源:互联网 发布:编程机器人2.0 攻略 编辑:程序博客网 时间:2024/04/30 11:08

环境:Eclipse Luna Service Release 2 (4.4.2)+Tomcat 7/8

描述:Eclipse可以正常启动Tomcat8 server来运行war包,但当通过网页访问其web时,出现如下crash信息,导致web无法访问。

但使用tomcat7可以正常访问web服务。

三月 22, 2016 2:51:35 下午 org.apache.catalina.core.StandardWrapperValve invoke严重: Servlet.service() for servlet [jsp] in context with path [/cloud_manager] threw exception [Unable to compile class for JSP: An error occurred at line: [73] in the generated java file: [E:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\cloud_manager\org\apache\jsp\index_jsp.java]<span style="color:#ff0000;">The method getDispatcherType() is undefined for the type HttpServletRequest</span>Stacktrace:] with root causeorg.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: [73] in the generated java file: [E:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\cloud_manager\org\apache\jsp\index_jsp.java]<span style="color:#ff0000;">The method getDispatcherType() is undefined for the type HttpServletRequest</span>Stacktrace:at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102)at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:198)at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:450)at org.apache.jasper.compiler.Compiler.compile(Compiler.java:361)at org.apache.jasper.compiler.Compiler.compile(Compiler.java:336)at org.apache.jasper.compiler.Compiler.compile(Compiler.java:323)at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:580)at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:356)at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:151)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:614)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:147)at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:279)at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Unknown Source)三月 22, 2016 2:51:35 下午 org.apache.catalina.core.StandardWrapperValve invoke严重: Servlet.service() for servlet [jsp] in context with path [/cloud_manager] threw exception [java.lang.ClassNotFoundException: org.apache.jsp.index_jsp] with root causejava.lang.ClassNotFoundException: org.apache.jsp.index_jspat java.net.URLClassLoader$1.run(Unknown Source)at java.net.URLClassLoader$1.run(Unknown Source)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(Unknown Source)at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:131)at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:62)at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:129)at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:171)at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:368)at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:151)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:614)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:147)at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:279)at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Unknown Source)


原因:

旧的servlet-api和tomcat8中冲突,使用javax.servlet-api。


解决方案:

将pom.xml文件中的依赖项servlet-api

<dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version></dependency>

改成javax.servlet-api,如下

<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version></dependency>

使用javax.servlet-api可以同时兼任tomcat7和tomcat8。



0 0