itVincent Blog - Java Working Fun!

          技術引領時代!
          posts - 117, comments - 181, trackbacks - 0, articles - 12

          【關鍵詞】maven tomcat plugin Filter
          【問題描述】

          在maven2中使用tomcat plugin啟動web應用,在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報

          java.lang.ClassCastException: common.filter.CacheFilter cannot be cast to javax.servlet.Servlet 

           

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

                  <dependency>
                      
          <groupId>javax.servlet</groupId>
                      
          <artifactId>servlet-api</artifactId>
                      
          <version>2.4</version>
                  
          </dependency>
          但是tomcat里已經有servlet-api的包,而且版本可能會有不同,所以就會出現ClassCastException的問題


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

          <dependency>
                      
          <groupId>javax.servlet</groupId>
                      
          <artifactId>servlet-api</artifactId>
                      
          <version>2.4</version>
                      
          <scope>provided</scope>
                  
          </dependency>

          這樣修改后,servlet-api.jar就不會在運行tomcat時被import進去了,不會與tomcat自帶的servlet-api有沖突

          【避免此類問題的建議】
          注意pom.xml中關于包的scope的定義,解決此類包沖突產生的問題

          主站蜘蛛池模板: 泰和县| 南漳县| 建平县| 维西| 西丰县| 如皋市| 治多县| 莒南县| 大关县| 威宁| 沈丘县| 修文县| 两当县| 高台县| SHOW| 永顺县| 中牟县| 福安市| 含山县| 宁都县| 芮城县| 岚皋县| 中西区| 芦山县| 平湖市| 花莲县| 东兴市| 寿阳县| 色达县| 翁源县| 汽车| 汝城县| 平泉县| 肇州县| 平顶山市| 隆子县| 包头市| 汤原县| 黄石市| 广水市| 通城县|