在maven2中使用tomcat plugin的時,報cannot be cast to javax.servlet.Filter的問題
Posted on 2009-08-24 14:30 itVincent 閱讀(7933) 評論(0) 編輯 收藏 所屬分類: maven【關(guān)鍵詞】maven tomcat plugin Filter
【問題描述】
在maven2中使用tomcat plugin啟動web應(yīng)用,在pom.xml中加入以下配置信息:

<project> ... <build> <!-- To define the plugin version in your parent POM --> <pluginManagement> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>tomcat-maven-plugin</artifactId> <version>1.0-beta-1</version> </plugin> ... </plugins> </pluginManagement> <!-- To use the plugin goals in your POM or parent POM --> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>tomcat-maven-plugin</artifactId> <version>1.0-beta-1</version> </plugin> ... </plugins> </build> ... </project>

運行mvn tomcat:run后,tomcat報

【分析原因】
由于CacheFilter實現(xiàn)了javax.servlet.Filter接口,F(xiàn)ilter是在servlet-api.jar里,因此pom中有





【解決辦法】
servlet-api加入<scope>provided</scope>,如下:






這樣修改后,servlet-api.jar就不會在運行tomcat時被import進(jìn)去了,不會與tomcat自帶的servlet-api有沖突
【避免此類問題的建議】
注意pom.xml中關(guān)于包的scope的定義,解決此類包沖突產(chǎn)生的問題