1. 程式人生 > >maven啟動 cannot be cast to javax.servlet.Filter/cannot be cast to javax.servlet.Servlet 報錯

maven啟動 cannot be cast to javax.servlet.Filter/cannot be cast to javax.servlet.Servlet 報錯

使用maven開發web應用程式,啟動就報錯:

java.lang.ClassCastException: com.alibaba.druid.support.http.WebStatFilter cannot be cast to javax.servlet.Filter

就算註釋了該filter也會報spring的dispatch的servlet無法轉型。

原因

折騰了好久,終於找出原因:servlet-api.jar與tomcat自帶的包衝突

 <dependency>
     <groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId> <version>2.4</version> <scope>provided</scope> <!--加上即可--> </dependency>
<scope>,它主要管理依賴的部署。目前<scope>可以使用5個值:  
1. compile,預設值,會隨著專案一起釋出。 
2. provided,類似compile,希望執行容器提供。 
3. runtime,執行時使用。 
4. 
test,只在測試時使用,不會用於釋出。 5. system,類似provided