getDispatcherType()是未定义的typesHttpServletRequest

我已经将一个JavadynamicWeb项目导入Eclipse IDE(在Eclipse IDE中实现并正确工作)。

我得到一个“ getDispatcherType()未定义的typesHttpServletRequest ”错误,同时运行该项目。

我已经按照结构将每个文件复制到IDE中,并完成了工作。

现在我只想知道当我导入项目时为什么会出现这个错误。 有没有人遇到同样的问题? 请让我知道我可能犯了什么错误。

当我在IntelliJ中使用与servlet-api版本相冲突的servlet-api版本时,我遇到了同样的问题,它与Tomcat 8.0.x中支持的版本冲突…我使用的是Maven,所以我只是改变了依赖关系,干净的部署我的Web应用程序,问题就消失了。

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

tomcat 8.0.18,maven。 这是关于lib冲突。 我的解决scheme是:

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

变成:

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

你应该从你的pom.xml中的其他依赖中排除“servlet-api-2.5.jar”

尽量不要像编译一样添加一个不同的servlet-api,因为你的tomcat已经为你提供了。


我的步骤:

我已经检查过,Maven在我的WEB-INF / lib文件夹中包含了一个servlet-api-2.5.jar,于是我在“Maven projects @IntelliJ Idea”上查看了完整的依赖关系图,然后排除了这个依赖关系来自所有的地方。 [button“显示依赖关系”对此适用)

我必须从velocity-tools中排除“commons-logging”(因为它具有servlet-api 2.5依赖性)。 还必须从jaxws-spring中排除servlet-api,这个默认范围直接依赖于它。

然后,只需添加您提供的范围,就可以在javax.servlet-api依赖项上。

如果你把你的servlet-api 3.0.1+添加为“compile”,那么你最终可能会同时拥有这两者,而第一个加载将会赢,这根本就不好。

注意:我的猜测是,这个问题来自servlet-api的groupId / artifactId的重命名,而不是被包含在maven项目中的最旧版本所覆盖。 :\

如果你的tomcat是版本8,使用:

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

成功了!

从旧版本升级到更新的Tomcat版本并保留旧的jar文件(如j2ee.jar和javaee.jar)时,也会发生这种情况。

j2ee.jar应该包含在你的webapp中,interfae是由tomcat实现的

我通过使用tomcat本身的servlet-api.jar和jsp-api.jar解决了这个问题,所以依赖性将通过如下的系统范围来指定:

 <servlet.api.jar.path>/opt/apache-tomcat-8.0.15/lib/servlet-api.jar</servlet.api.jar.path> <jsp.api.jar.path>/opt/apache-tomcat-8.0.15/lib/jsp-api.jar</jsp.api.jar.path> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>3.0</version> <scope>system</scope> <systemPath>${servlet.api.jar.path}</systemPath> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> <scope>system</scope> <systemPath>${jsp.api.jar.path}</systemPath> </dependency>