最近从oschina上 下载了一个开源的项目
https://git.oschina.net/huangxianyuan/hxyFrame.git
git 完之后 看到pom.xml中原来有tomcat的,只是注释掉了
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<version>1.1</version>
<configuration>
<path>/hxyFrame</path>
<port>8080</port>
<uriEncoding>UTF-8</uriEncoding>
<url>http://localhost:8080/hxyFrame/</url>
<server>tomcat7</server>
</configuration>
</plugin>
我将它去掉注释 maven build..时提示了
org.jasig.cas.client.session.SingleSignOutFilter cannot be cast to javax.servlet.Filter
错误 如下
九月 16, 2017 3:11:25 下午 org.apache.catalina.startup.Embedded start
信息: Starting tomcat server
九月 16, 2017 3:11:25 下午 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/6.0.29
九月 16, 2017 3:11:26 下午 org.apache.catalina.core.StandardContext filterStart
严重: Exception starting filter CAS Single Sign Out Filter
java.lang.ClassCastException: org.jasig.cas.client.session.SingleSignOutFilter cannot be cast to javax.servlet.Filter
百度之后 才知道 原来maven 整合了tomcat插件启动的话 tomcat 会加载tomcat/lib下的包,如果maven项目本身也也定义了跟tomcat相同的jar包 那么就会出现冲突。 解决方法就是将maven项目中pom.xml中的java ee jar包 加上<SCOPE>PROVIDED</SCOPE>
<!-- 导入java ee jar 包 -->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<scope>provided</scope><!-- 由于tomcat启动时会再取这个所以暂时不加载 -->
<version>${javaee.api.version}</version>
</dependency>
provided表明该包只在编译和测试的时候用,所以,当启动tomcat的时候,就不会冲突了
所参考的网上解决方法



