org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter和java.lang.LinkageError: loader constraint violation: loader ,instance of org/apache/jasper/servlet/JasperL

正在学java,搭建servlet运行环境,然后无论本地配的是tomcat7插件,还是不配置tomcat插件(不配置tomcat插件,maven会默认使用tomcat6版本运行程序,应该是自带的)。这个问题困扰了我很久,网上查到的结论大多都是

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <scope>provided</scope>
</dependency>

添加servlet依赖的时候要添加provided。

...

...

...

最后我无意中发现我在eclipse项目中的JRE SYSTEM LIBRARY依赖点开,发现有一个servlet-api.jar!!! 我去这个包是哪来的?。。。原来我当时手贱,搭建环境的时候把tomcat下的servlet-api.jar包,复制了一份到/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home/jre/lib/ext这个目录下,所以会导致每个项目都会自带一个servlet-api.jar这个包的依赖,然后又在maven的配置文件pom.xml中再添加一个servlet的依赖,不冲突才怪啊!