SEVERE: SpringSecurityFilterChain exception ... ClassCastException ... DelegatingFilterProxy cannot be added

can someone help me solve my tomcat launch error, I get the following error when I start tomcat:

SEVERE: Exception starting filter springSecurityFilterChain java.lang.ClassCastException: org.springframework.web.filter.DelegatingFilterProxy 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:533) at org.codehaus.mojo.tomcat.AbstractRunMojo.execute(AbstractRunMojo.java:239) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) 
+6
source share
5 answers

One of your dependencies includes a servlet api in your war file that causes this behavior. Using mvn dependency: tree, you can find out which of your dependencies is this. After that, you need to exclude servlet-api as follows:

 <dependency> <groupId>[VALUE]</groupId> <artifactId>[VALUE]</artifactId> <version>[VALUE]</version> <exclusions> <exclusion> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> </exclusion> </exclusions> </dependency> 

You need to do this for another servlet-api (e.g. org.mortbay.jetty: servlet-api, ..).

+9
source

I could fix this by removing servlet-api.jar from my deployment build (in eclipse)

my-web-project-> properties → Assembly Deployment

and removing it. Others argue that on maven projects, the servlet-api dependency scope should be set to "provided"

+3
source

I had a similar problem when I added a dependency for CXF. I tried the above recommended way to exclude javax.servlet from this dependency, but it did not work, but the addition provided it. This may be another case for you, but worth a try.

 <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-bundle-jaxrs</artifactId> <version>2.2.9</version> <scope>provided</scope> </dependency> 

If I answered your question, mark it like this.;)

+1
source

The symbolic problem was resolved by excluding geronimo.

  <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http-jetty</artifactId> <version>3.0.3</version> <exclusions> <exclusion> <groupId>org.apache.geronimo.specs</groupId> <artifactId>geronimo-servlet_2.5_spec</artifactId> </exclusion> <exclusion> <groupId>org.apache.geronimo.specs</groupId> <artifactId>geronimo-servlet_3.0_spec</artifactId> </exclusion> </exclusions> </dependency> 

Determine which jar files contain the uas error found when scanning each jar file in the WEB-INF / lib folder for the classes it contains. I.e.

 jar tvf <jar-file> 
0
source

You are probably setting in web.xml

 <servlet> <servlet-name>springSecurityFilterChain</servlet-name> <servlet-class>org.springframework.web.filter.DelegatingFilterProxy</servlet-class> </servlet> 

but this is a filter. therefore change the servlet as a filter.

0
source

Source: https://habr.com/ru/post/898947/


All Articles