您的位置:首页 > 编程语言 > Java开发

java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast

2016-09-04 17:06 811 查看
严重: Exception starting filter encodingFilter

java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4001)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4651)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
at org.apache.catalina.startup.Embedded.start(Embedded.java:825)
at org.codehaus.mojo.tomcat.AbstractRunMojo.startContainer(AbstractRunMojo.java:558)
at org.codehaus.mojo.tomcat.AbstractRunMojo.execute(AbstractRunMojo.java:255)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:133)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:108)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:76)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:116)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:361)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:157)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

出现场景:在进行Spring+SpringMVC+mybatis的整合问题时候,出现了包的冲突,对没错的,是包的冲突,cast是加的意思,这里是说org.springframework.web.filter.CharacterEncodingFilter不能与javax.servlet.Filter相容,他们实现的功能都一样,放在一起就出现了冲突。

解决思路:花了三天时间来想这个问题,之前在网上找的答案也是这样解释的,都说要加

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

</dependency>

但自己加入之后,并不能解决问题,当时就怀疑问题到底是不是处在这里。面对一堆不认识的英文,整个人就懵逼了。由于是从外面导入进来的项目,总是怀疑是项目的问题,所以尝试过导入其他的ssm项目,尝试过新建项目重新写代码,尝试过用eclipse和myeclipse两种工具对比测试......尝试了很多方案,最终还是不能解决问题。回过头,再来看包冲突的问题,来找这两个包到底在哪里,最后发现了是spring包和javaee包里面的问题,尝试过删除javaee里面filter,但又有新的问题出现。在想如何将javaee里面的filter给屏蔽掉,最后还是尝试来看看上面的<scope>,尝试用在了javaee的配置里,最后通过了。下面是网上对<scope>对的解释:



这样问题就解决了。

总结,遇到问题,一定要冷静,分析问题到底出在哪里,不要畏惧问题,对问题的畏惧只会让自己偏离了正道,让解决问题的时间变得更长了。认定一个问题了,不管有多难,一定能找到解决的方案,只要知道自己的问题是什么。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐