由于项目使用到servlet-api.jar,maven引用后,部署时与tomcat有冲突。
贴个错误:
java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter
原因:
tomcat启动后,如果tomcat/lib目录下的jar和项目的WEB-INF/lib目录下有相同的包,将无法加载,
不同版本的包之间也会造成类似问题。
解决:修改冲突包(servlet-api.jar)的作用范围(provided)
附:
依赖范围(scope) | 主源码classpath可用 | 测试源码classpath可用 | 会被打包 |
compile 缺省值 | TRUE | TRUE | TRUE |
test | FALSE | TRUE | FALSE |
runtime | FALSE | TRUE | TRUE |
provided | TRUE | TRUE | FALSE |