2011-10-10 18 views
6

をキャストすることはできません誰も私が私のTomcatの実行エラーを解決することができ、私は次のエラーを取得する::私はTomcatを実行したときに例外springSecurityFilterChain ... ClassCastExceptionが... DelegatingFilterProxyは

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) 

答えて

3

私がすることで、この問題を解決できました(日食で)私の展開アセンブリからのservlet-api.jarのを取り除く

私のウェブ・プロジェクト - >プロパティ - >展開組立

、それを取り除きます。他の人は、Mavenプロジェクトではサーブレットの依存関係の範囲を '提供済み'に設定する必要があると述べています。

9

あなたの依存関係の1つは、その動作を引き起こすwarletファイルへのservlet- mvn dependency:treeを使用すると、依存関係のどれがそれであるかを知ることができます。その後、あなたは次のようにサーブレットAPIを除外する必要がありますだけでなく:(..、サーブレットAPI例えばorg.mortbay.jetty)

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

は、あなたが他のサーブレットAPIのためにこれを行う必要があります。

1

CXFの依存関係を追加したときに同様の問題が発生しました。その依存関係からjavax.servletを除外する上記の推奨された方法を試しましたが、うまくいかなかったのですが、それを補って解決しました。 あなたとは異なるケースかもしれませんが、試してみる価値があります。

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

私があなたの質問に答えた場合は、それに印を付けてください。 ;)

0

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> 

jarファイルは、それが含まれているクラスのためのWEB-INF/libフォルダ内の各jarファイルをスキャンして検出されたエラーのUASを含んでいDeterminig。私。

jar tvf <jar-file> 
0

はおそらくweb.xmlにあなたは

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

を設定するが、それはフィルタです。サーブレットをフィルタとして変更してください。

関連する問題