SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer

org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet. ServletContainerInitializer
场景:SSM+tomcat7环境中用IDEA Community运行项目(基于Smart Tomcat),确认Smart Tomcat配置没问题后项目启动报错

报错原因:
项目的pom.xml配置了javax.servlet与tomcat7中的servlet-api.jar中的servlet冲突所造成的.
但是,工程是聚合工程,若将commons‘程里面的servlet-api依赖的 scope修改成 provided 就会导致其他依赖了 commons的工程找不到引用过 servlet-api中的类

解决方案
将commons工程中的pom.xml

1
2
3
4
5
6
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
<version>{servlet-api.version}</version>
</dependency>

将依赖了commons工程中的pom.xml

1
2
3
4
5
6
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
<version>{servlet-api.version}</version>
</dependency>