maven org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter
2017-04-25 00:00
691 查看
使用maven将项目部署到tomcat容器,启动的时候报如下错误:
http://blog.csdn.net/z69183787/article/details/19911935
[java]viewplaincopy
严重:ExceptionstartingfiltercharsetFilter
java.lang.ClassCastException:org.springframework.web.filter.CharacterEncodingFiltercannotbecasttojavax.servlet.Filter
atorg.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
atorg.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
atorg.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
atorg.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4001)
atorg.apache.catalina.core.StandardContext.start(StandardContext.java:4651)
atorg.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
atorg.apache.catalina.core.StandardHost.start(StandardHost.java:785)
atorg.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
atorg.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
atorg.apache.catalina.startup.Embedded.start(Embedded.java:825)
atorg.codehaus.mojo.tomcat.AbstractRunMojo.startContainer(AbstractRunMojo.java:558)
atorg.codehaus.mojo.tomcat.AbstractRunMojo.execute(AbstractRunMojo.java:255)
atorg.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
atorg.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
atorg.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
atorg.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
atorg.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
atorg.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
atorg.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
atorg.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
atorg.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)
atorg.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
atorg.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
atorg.apache.maven.cli.MavenCli.doMain(MavenCli.java:216)
atorg.apache.maven.cli.MavenCli.main(MavenCli.java:160)
atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)
atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
atjava.lang.reflect.Method.invoke(Method.java:483)
atorg.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
atorg.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
atorg.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
atorg.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
五月29,201511:01:46上午org.apache.catalina.core.StandardContextfilterStart
严重:ExceptionstartingfilterspringSecurityFilterChain
java.lang.ClassCastException:org.springframework.web.filter.DelegatingFilterProxycannotbecasttojavax.servlet.Filter
atorg.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
atorg.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
atorg.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
atorg.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4001)
atorg.apache.catalina.core.StandardContext.start(StandardContext.java:4651)
atorg.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
atorg.apache.catalina.core.StandardHost.start(StandardHost.java:785)
atorg.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
atorg.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
atorg.apache.catalina.startup.Embedded.start(Embedded.java:825)
atorg.codehaus.mojo.tomcat.AbstractRunMojo.startContainer(AbstractRunMojo.java:558)
atorg.codehaus.mojo.tomcat.AbstractRunMojo.execute(AbstractRunMojo.java:255)
atorg.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
atorg.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
atorg.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
atorg.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
atorg.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
atorg.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
atorg.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
atorg.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
atorg.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)
atorg.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
atorg.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
atorg.apache.maven.cli.MavenCli.doMain(MavenCli.java:216)
atorg.apache.maven.cli.MavenCli.main(MavenCli.java:160)
atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)
atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
atjava.lang.reflect.Method.invoke(Method.java:483)
atorg.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
atorg.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
atorg.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
atorg.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
pom.xml文件部分配置如下:
[java]viewplaincopy
<preclass="java"name="code"><dependencies>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<strong><scope>provided</scope><!--此处已经改过,试过还是不行--></strong>
</dependency>
<!--aspectjdependency-->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.6.11</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.11</version>
</dependency>
<!--DataSource-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>1.5.7</version>
<scope>runtime</scope>
</dependency>
<!--javax-->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope><!--问题出在这里-->
</dependency>
</dependencies>
web.xml文件部分配置如下:
[html]viewplaincopy
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
[html]viewplaincopy
<!--ConfigureCharset-->
<filter>
<filter-name>charsetFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
纠结了一天,网上说是jar包冲突:
“tomcat启动后先将tomcat/lib目录下的jar包全部读入内存,如果webapps目录里的应用程序中WEB-INF/lib目录下有相同的包,将无法加载,
不同版本的包之间也会造成类似问题。
解决这个问题的方法就是对于servlet-ap.jar使用<scope>标签,编译的时候用到servlet-api和jsp-api,但在打包的时候不用这两个依赖
如下”
[html]viewplaincopy
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
后来在网上看到一篇文章(http://stackoverflow.com/questions/15715864/opensessioninviewfilter-cannot-be-cast-to-javax-servlet-filter),终于找到问题。
如下测试代码,能告诉你class文件是从哪个jar包中加载的
[java]viewplaincopy
@Test
publicvoidget(){
URLurl=Filter.class.getProtectionDomain().getCodeSource().getLocation();
System.out.println("path:"+url.getPath()+"name:"+url.getFile());
importjava.net.URL;
importjavax.servlet.Filter;
importorg.junit.Test;
publicclassd{
@Test
publicvoidtestget(){
URLurl=Filter.class.getProtectionDomain().getCodeSource().getLocation();
System.out.println("path:"+url.getPath()+"name:"+url.getFile());
}
}
//输出结果:path:/C:/Users/User/.m2/repository/javax/javaee-api/7.0/javaee-api-7.0.jarname:/C:/Users/User/.m2/repository/javax/javaee-api/7.0/javaee-api-7.0.jar
我们实际项目中用到了javaee的api,javaee-api-7.0.jar文件中也有Filter,所以在引用javaee-api依赖的时候,pom.xml文件中对应的加上“<scope>provided</scope>”就可以了
(说明:
测试的时候,需要将pom.xml文件中
[html]viewplaincopy
<!--
[html]viewplaincopy
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
[html]viewplaincopy
-->
解决Settingproperty'source'to'org.eclipse.jst.jee.server的问题
http://blog.csdn.net/z69183787/article/details/19911935[java]
严重:ExceptionstartingfiltercharsetFilter
java.lang.ClassCastException:org.springframework.web.filter.CharacterEncodingFiltercannotbecasttojavax.servlet.Filter
atorg.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
atorg.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
atorg.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
atorg.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4001)
atorg.apache.catalina.core.StandardContext.start(StandardContext.java:4651)
atorg.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
atorg.apache.catalina.core.StandardHost.start(StandardHost.java:785)
atorg.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
atorg.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
atorg.apache.catalina.startup.Embedded.start(Embedded.java:825)
atorg.codehaus.mojo.tomcat.AbstractRunMojo.startContainer(AbstractRunMojo.java:558)
atorg.codehaus.mojo.tomcat.AbstractRunMojo.execute(AbstractRunMojo.java:255)
atorg.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
atorg.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
atorg.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
atorg.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
atorg.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
atorg.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
atorg.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
atorg.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
atorg.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)
atorg.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
atorg.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
atorg.apache.maven.cli.MavenCli.doMain(MavenCli.java:216)
atorg.apache.maven.cli.MavenCli.main(MavenCli.java:160)
atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)
atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
atjava.lang.reflect.Method.invoke(Method.java:483)
atorg.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
atorg.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
atorg.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
atorg.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
五月29,201511:01:46上午org.apache.catalina.core.StandardContextfilterStart
严重:ExceptionstartingfilterspringSecurityFilterChain
java.lang.ClassCastException:org.springframework.web.filter.DelegatingFilterProxycannotbecasttojavax.servlet.Filter
atorg.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
atorg.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
atorg.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
atorg.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4001)
atorg.apache.catalina.core.StandardContext.start(StandardContext.java:4651)
atorg.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
atorg.apache.catalina.core.StandardHost.start(StandardHost.java:785)
atorg.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
atorg.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
atorg.apache.catalina.startup.Embedded.start(Embedded.java:825)
atorg.codehaus.mojo.tomcat.AbstractRunMojo.startContainer(AbstractRunMojo.java:558)
atorg.codehaus.mojo.tomcat.AbstractRunMojo.execute(AbstractRunMojo.java:255)
atorg.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
atorg.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
atorg.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
atorg.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
atorg.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
atorg.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
atorg.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
atorg.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
atorg.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)
atorg.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
atorg.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
atorg.apache.maven.cli.MavenCli.doMain(MavenCli.java:216)
atorg.apache.maven.cli.MavenCli.main(MavenCli.java:160)
atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)
atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
atjava.lang.reflect.Method.invoke(Method.java:483)
atorg.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
atorg.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
atorg.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
atorg.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
pom.xml文件部分配置如下:
[java]
<preclass="java"name="code"><dependencies>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<strong><scope>provided</scope><!--此处已经改过,试过还是不行--></strong>
</dependency>
<!--aspectjdependency-->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.6.11</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.11</version>
</dependency>
<!--DataSource-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>1.5.7</version>
<scope>runtime</scope>
</dependency>
<!--javax-->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope><!--问题出在这里-->
</dependency>
</dependencies>
web.xml文件部分配置如下:
[html]
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
[html]
<!--ConfigureCharset-->
<filter>
<filter-name>charsetFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
纠结了一天,网上说是jar包冲突:
“tomcat启动后先将tomcat/lib目录下的jar包全部读入内存,如果webapps目录里的应用程序中WEB-INF/lib目录下有相同的包,将无法加载,
不同版本的包之间也会造成类似问题。
解决这个问题的方法就是对于servlet-ap.jar使用<scope>标签,编译的时候用到servlet-api和jsp-api,但在打包的时候不用这两个依赖
如下”
[html]
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
后来在网上看到一篇文章(
如下
[java]
publicvoidget(){
URLurl=Filter.class.getProtectionDomain().getCodeSource().getLocation();
System.out.println("path:"+url.getPath()+"name:"+url.getFile());
importjava.net.URL;
importjavax.servlet.Filter;
importorg.junit.Test;
publicclassd{
publicvoidtestget(){
URLurl=Filter.class.getProtectionDomain().getCodeSource().getLocation();
System.out.println("path:"+url.getPath()+"name:"+url.getFile());
}
}
//输出结果:path:/C:/Users/User/.m2/repository/javax/javaee-api/7.0/javaee-api-7.0.jarname:/C:/Users/User/.m2/repository/javax/javaee-api/7.0/javaee-api-7.0.jar
我们实际项目中用到了javaee的api,javaee-api-7.0.jar文件中也有Filter,所以在引用javaee-api依赖的时候,pom.xml文件中对应的加上“<scope>provided</scope>”就可以了
(说明:
测试的时候,需要将pom.xml文件中
[html]
<!--
[html]
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
[html]
-->
相关文章推荐
- 在maven项目中使用apache cxf中遇到异常 java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter
- maven org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter
- org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter
- java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter
- org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter报错
- org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter异常
- org.springframework.web.servlet.DispatcherServlet cannot be cast to javax.servle
- org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletCon
- org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletCon
- org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletCon
- maven构建的项目运行tomcat时报:CharacterEncodingFilter cannot be cast to javax.servlet.Filter
- org.springframework.web.servlet.DispatcherServlet cannot be cast to javax.servlet.Servlet
- Caused by: java.lang.ClassCastException: org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer错误解决办法
- org.springframework.web.servlet.DispatcherServlet cannot be cast to javax.servle
- org.springframework.web.servlet.DispatcherServlet cannot be cast to javax.servlet.Servlet
- org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.Servle...
- java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast
- 用kindeditor 报:org.apache.catalina.connector.RequestFacade cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest
- cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest
- cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest