Spring Tomcat7 错误 "org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer"

Spring Tomcat7 error "org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer"

我在启动 Tomcat7 服务器时出现以下错误。

org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer

我只是想知道这个问题的根本原因。在什么情况下会发生此错误?我在使用 Tomcat Enterprise Edition(TomEE)

时没有收到错误

在我的项目中,ServletContainerInitializer 正在从 javeee-api-7.0.jar

加载

我已经尝试排除从 javeee-api 加载的 javax.servlet-api 但那不起作用

添加 javeee-api-7。0.jar,对我有用。

我们在我们的项目中遇到过这种情况,其中包含大量遗留代码,这些代码显然没有得到很好的维护。

我们通过分析所有 pom.xml 文件中的所有依赖关系解决了这个问题。 特别是对于这个问题,我们所做的是排除 javax.servlet api 因为有一个冲突的版本加载并导致转换错误。

如果使用eclipse,打开pom.xml文件时,可以在底部的Dependency Hierarchy选项卡中查看依赖关系。 在那里您可以使用过滤器查看所有 servlet jar 版本,以及使用它们的顶级依赖项。然后,您可以通过右键单击它们并选择 "Exclude Maven Artifact..." 来排除有问题的问题 然后是显而易见的:保存您的 pom.xml,最终重复其他 projects/modules,更新您的 Maven 项目配置,最后 build/install/run 查看问题是否已解决。

希望对您有所帮助!