java – 对于HttpServletRequest类型,未定义方法getDispatcherType()
作者:互联网
当我从Eclipse运行我的应用程序时,它运行时没有任何错误的servlet api 3.1.0和3.0.1.
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
我使用tomcat 8.0.21进行eclipse.我在ubuntu机器上设置了tomcat8,它运行在tomcat 8.0.14稳定版本上.
不幸的是,如果我使用servlet api 3.1.0,我会收到以下错误消息.但它适用于旧版本3.0.1.
root cause
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: [50] in the generated java file: [/var/lib/tomcat8/work/Catalina/localhost/ROOT/org/apache/jsp/WEB_002dINF/view/templates/login_002dtemplate_jsp.java]
The method getDispatcherType() is undefined for the type HttpServletRequest
Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:199)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:450)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:361)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:336)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:323)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
为什么我会收到此错误?如何解决这个问题?
解决方法:
如果目标运行时已经提供了API,那么您不应该提供Servlet API以及Web应用程序存档. Tomcat作为JSP / Servletcontainer已经开箱即用,提供了JSP,Servlet和EL API.无论如何,当您将它们与webapp一起提供时,您可能会遇到由来自webapp和服务器的运行时类路径中的重复的不同版本化类引起的类加载冲突.
添加< scope>提供< / scope>到目标运行时已经提供的那些依赖项.
也可以看看:
> How do I import the javax.servlet API in my Eclipse project?
标签:tomcat8,nosuchmethoderror,java,maven,servlets 来源: https://codeday.me/bug/20190916/1806528.html