对于HttpServletRequest类型,未定义getDispatcherType()

no_*_*mer 36 java eclipse servlets

我已经将一个Java动态Web项目导入Eclipse IDE(它在Eclipse IDE中实现并正常工作).

运行项目时,我收到" getDispatcherType()未定义类型HttpServletRequest"错误.

我已根据结构将每个文件复制到IDE中,并完成了工作.

现在我只想知道为什么在导入项目时出现此错误.有人遇到过同样的问题吗?请让我知道我可能犯了什么错误.

Jam*_*her 42

当我在IntelliJ中使用与我在Tomcat 8.0.x中支持的内容相冲突的servlet-api版本时,我遇到了同样的问题...我正在使用Maven,所以我只是改变了对它的依赖,然后做了一个干净部署我的webapp,问题就消失了.

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

  • 这是一个错误的解决方案/修复,因为您要添加两次相同的依赖项,一个由tomcat 8提供,另一个在lib文件夹中.该错误来自于从第三方依赖项添加servlet-api 2.5.除非你不在一个为你提供servlet-api的容器中. (3认同)

zon*_*ond 14

tomcat 8.0.18,maven.这是关于lib的冲突.我的解决方案是:

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

变成:

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)


Jua*_*rey 6

您应该从pom.xml中可能包含的任何其他依赖项中排除"servlet-api-2.5.jar".

尽量不要将不同的servlet-api添加为编译,因为tomcat已经为您提供了它.


我的步骤:

我已经检查过Maven中有一个servlet-api-2.5.jar包含在我的WEB-INF/lib文件夹中,所以我检查了"Maven projects @IntelliJ Idea"的完整依赖图,然后我排除了这个依赖来自它所在的所有地方.[按钮"显示依赖关系"对此很方便]

我不得不从速度工具中排除"commons-logging"(因为它有servlet-api 2.5依赖).还必须从jaxws-spring中排除servlet-api,它直接依赖于默认范围.

然后,只需在javax.servlet-api依赖项中添加您应该提供的范围.

如果你将servlet-api 3.0.1+添加为"compile",你可能最终得到两者,并且第一个加载将获胜,这根本不是好事.

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