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)生的問題

          主站蜘蛛池模板: 太仓市| 丹棱县| 天峻县| 海城市| 道孚县| 浠水县| 北流市| 遂溪县| 巫溪县| 博客| 全椒县| 镇江市| 泽州县| 临夏市| 静宁县| 肇庆市| 枣阳市| 孙吴县| 阿图什市| 巫山县| 昌邑市| 申扎县| 西平县| 拜城县| 宿迁市| 许昌市| 绿春县| 宁海县| 普宁市| 江孜县| 庄浪县| 石嘴山市| 和林格尔县| 中卫市| 那曲县| 昌都县| 徐闻县| 莱芜市| 化德县| 竹北市| 南澳县|