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的定義,解決此類包沖突產生的問題

          主站蜘蛛池模板: 肥西县| 民县| 光山县| 富宁县| 特克斯县| 肇庆市| 徐汇区| 蚌埠市| 田阳县| 腾冲县| 大悟县| 山阴县| 叙永县| 邹城市| 田林县| 明水县| 岢岚县| 黄梅县| 柞水县| 胶南市| 泾川县| 西乡县| 绥棱县| 马山县| 三亚市| 栾川县| 明溪县| 岗巴县| 南乐县| 泌阳县| 江阴市| 永胜县| 丹巴县| 龙游县| 淮安市| 平泉县| 鄂伦春自治旗| 永春县| 太仆寺旗| 固安县| 时尚|