itVincent Blog - Java Working Fun!

          技術(shù)引領(lǐng)時代!
          posts - 117, comments - 181, trackbacks - 0, articles - 12

          【關(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報

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

           

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

                  <dependency>
                      
          <groupId>javax.servlet</groupId>
                      
          <artifactId>servlet-api</artifactId>
                      
          <version>2.4</version>
                  
          </dependency>
          但是tomcat里已經(jīng)有servlet-api的包,而且版本可能會有不同,所以就會出現(xiàn)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進(jìn)去了,不會與tomcat自帶的servlet-api有沖突

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

          主站蜘蛛池模板: 措勤县| 南安市| 鹿邑县| 仪陇县| 河南省| 郯城县| 丽江市| 宜都市| 莫力| 宁远县| 镇坪县| 大同市| 齐齐哈尔市| 乌审旗| 新郑市| 漳州市| 石首市| 平顶山市| 墨脱县| 自贡市| 昭平县| 嘉祥县| 博爱县| 北流市| 湖州市| 平阴县| 平湖市| 玉屏| 祁阳县| 克什克腾旗| 黄龙县| 临朐县| 昂仁县| 冷水江市| 鄂伦春自治旗| 苏尼特右旗| 玉溪市| 昔阳县| 章丘市| 青川县| 云龙县|