我已将Java动态Web项目导入Eclipse IDE(在Eclipse IDE中实现并正常工作)。
我在运行项目时收到“getDispatcherType()
未定义类型HttpServletRequest
”错误。
我已根据结构将每个文件复制到IDE中,并完成了工作。
现在我只想知道为什么在导入项目时出现此错误。有人遇到过同样的问题吗?请让我知道我可能犯了什么错误。
答案 0 :(得分: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>
答案 1 :(得分:14)
tomcat 8.0.18,maven。它与lib冲突有关。我的解决方案是:
<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>
答案 2 :(得分:6)
您应该从pom.xml中可能包含的任何其他依赖项中排除“servlet-api-2.5.jar”。
尽量不要将不同的servlet-api添加为编译,因为你的tomcat已经为你提供了它。
我的步骤:
我已经检查过Maven中我的WEB-INF / lib文件夹中包含了一个servlet-api-2.5.jar,然后,我检查了“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项目中包含的最旧版本覆盖。 :\
答案 3 :(得分:1)
我通过使用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>
答案 4 :(得分:1)
如果您的tomcat是版本8,请使用:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
工作!
答案 5 :(得分:0)
从旧的Tomcat版本升级到新的Tomcat版本并保留旧的jar文件(如j2ee.jar和javaee.jar)时,也会发生这种情况。
j2ee.jar应该包含在你的webapp中,interfae是由tomcat实现的