2011-10-10 13 views
6

qualcuno può aiutarmi a risolvere il mio errore gatto correre, ottengo il seguente errore quando ho eseguito Tomcat:SEVERE: eccezione springSecurityFilterChain ... ClassCastException ... DelegatingFilterProxy non può essere lanciato

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) 

risposta

3

ho potuto risolvere questo problema la rimozione di servlet-api.jar dal mio gruppo di distribuzione (in Eclipse)

> proprietà progetto- my-web -> Assemblea Deployment

e la rimozione. Altri affermano che su progetti Maven l'ambito della dipendenza servlet-api deve essere impostato su 'fornito'

9

Una delle vostre dipendenze include un servlet-api nel file di guerra che causa questo comportamento. Usando la dipendenza da mvn: tree, puoi scoprire quale è la tua dipendenza. Dopo di che è necessario escludere il servlet-api come segue:

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

Hai bisogno di fare questo per altri di servlet-API (ad esempio org.mortbay.jetty: servlet-api, ..) pure.

1

Ho avuto un problema simile quando ho aggiunto la dipendenza per CXF. Ho provato il metodo sopra raccomandato di escludere javax.servlet da quella dipendenza ma non ha funzionato, ma l'aggiunta ha fornito la soluzione. Potrebbe essere un caso diverso per te, ma vale la pena provare.

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

Se ho risposto alla tua domanda per favore segnalo così. ;)

0

Il problema simile è stato risolto escludendo 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> 

determinig cui file jar contenevano gli UAS errore trovati mediante la scansione di ogni file jar nella cartella WEB-INF/lib per le classi che conteneva. Cioè

jar tvf <jar-file> 
0

probabilmente in web.xml si configura

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

ma è filtro. quindi cambia servlet come filtro.

Problemi correlati