`

maven2报cannot be cast to javax.servlet.Filter错误解决

阅读更多

在maven2中使用tomcat plugin的时,报cannot be cast to javax.servlet.Filter的问题

在maven2中使用tomcat plugin启动web应用,在pom.xml中加入以下配置信息:

  1. <project>  
  2. ...   
  3. <build>  
  4. <!-- To define the plugin version in your parent POM -->  
  5. <pluginManagement>  
  6. <plugins>  
  7. <plugin>  
  8. <groupId>org.codehaus.mojo</groupId>  
  9. <artifactId>tomcat-maven-plugin</artifactId>  
  10. <version>1.0-beta-1</version>  
  11. </plugin>  
  12. ...   
  13. </plugins>  
  14. </pluginManagement>  
  15. <!-- To use the plugin goals in your POM or parent POM -->  
  16. <plugins>  
  17. <plugin>  
  18. <groupId>org.codehaus.mojo</groupId>  
  19. <artifactId>tomcat-maven-plugin</artifactId>  
  20. <version>1.0-beta-1</version>  
  21. </plugin>  
  22. ...   
  23. </plugins>  
  24. </build>  
  25. ...   
  26. </project>  

运行mvn tomcat:run后,tomcat报错误如下:

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


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

  1. <dependency>  
  2.     <groupId>javax.servlet</groupId>  
  3.     <artifactId>servlet-api</artifactId>  
  4.     <version>2.4</version>  
  5. </dependency>  

但是tomcat里已经有servlet-api的包,而且版本可能会有不同,所以就会出现ClassCastException的问题


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

  1. <dependency>  
  2.             <groupId>javax.servlet</groupId>  
  3.             <artifactId>servlet-api</artifactId>  
  4.             <version>2.4</version>  
  5.             <scope>provided</scope>  
  6. </dependency>  

这样修改后,servlet-api.jar就不会在运行tomcat时被import进去了,不会与tomcat自带的servlet-api有冲突

【避免此类问题的建议】
注意pom.xml中关于包的scope的定义,解决此类包冲突产生的问题

分享到:
评论
3 楼 zoezhang 2012-11-20  
谢谢了,可以解决
2 楼 萧_瑟 2012-04-06  
根本就不行
1 楼 luoaz 2011-10-20  
我试了一下,就算是加入javax-api的依赖,启动tomcat时还是会报java.lang.ClassCastException: org.apache.jasper.servlet.JspServlet cannot be cast to javax.servlet.Servlet


楼主还有什么别的解决办法 吗?

相关推荐

    解决cannot be cast to javax.servlet.Filter 报错的问题

    当遇到“`cannot be cast to javax.servlet.Filter`”的错误时,通常意味着在程序运行过程中尝试将一个对象强制转换为`Filter`接口,但该对象实际类型并不符合预期。这种错误的出现可能是由于类路径(Classpath)中...

    javax.servlet jar包---解决找不到javax.servlet.*等问题

    当你遇到“找不到javax.servlet.*”这样的错误时,通常是因为你的项目缺少了这个库,所以需要引入`javax.servlet.jar`来解决问题。 1. **Java Servlet简介** Java Servlet是Java平台上的一个标准,用于扩展服务器...

    javax.servlet.jar下载

    javax.servlet.Filter.class javax.servlet.FilterConfig.class javax.servlet.ServletRequestAttributeListener.class javax.servlet.ServletRequestAttributeEvent.class javax.servlet.GenericServlet.class ...

    javax.servlet-api-4.0.1.jar中文文档.zip

    javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...

    javax.servlet-3.0.0.v201112011016-API文档-中文版.zip

    赠送jar包:javax.servlet-3.0.0.v201112011016.jar; 赠送原API文档:javax.servlet-3.0.0.v201112011016-javadoc.jar; 赠送源代码:javax.servlet-3.0.0.v201112011016-sources.jar; 赠送Maven依赖信息文件:...

    javax.servlet-3.0.0.v201112011016-API文档-中英对照版.zip

    赠送jar包:javax.servlet-3.0.0.v201112011016.jar; 赠送原API文档:javax.servlet-3.0.0.v201112011016-javadoc.jar; 赠送源代码:javax.servlet-3.0.0.v201112011016-sources.jar; 赠送Maven依赖信息文件:...

    javax.servlet-api-3.1.0.jar中文文档.zip

    javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...

    javax.servlet-api-3.1.0-sources.zip

    下地址https://repo1.maven.org/maven2/javax/servlet/javax.servlet-api/3.1.0/ 各个版本都有 javax.servlet-api-3.1.0-sources.jar

    javax.servlet-api-3.0.1.jar中文文档.zip

    javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...

    javax.servlet-api-4.0.1-API文档-中英对照版.zip

    Maven坐标:javax.servlet:javax.servlet-api:4.0.1; 标签:javax、servlet、api、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,...

    javax.servlet-api-4.0.0-API文档-中文版.zip

    Maven坐标:javax.servlet:javax.servlet-api:4.0.0; 标签:javax、servlet、api、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档...

    javax.servlet.jar包下载

    2. **javax.servlet包内容** `javax.servlet` 包中包含了Servlet API的主要类和接口,例如: - `Servlet`: 这是最基础的接口,所有的Servlet都必须实现这个接口。 - `GenericServlet`: 一个抽象类,实现了Servlet...

    javax.servlet-api-4.0.0-API文档-中英对照版.zip

    Maven坐标:javax.servlet:javax.servlet-api:4.0.0; 标签:javax、servlet、api、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,...

    javax.servlet-api-3.1-b01.jar中文文档.zip

    javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...

    javax.servlet-api-4.0.0-b04.jar中文文档.zip

    javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...

    javax.servlet-api-4.0.1-API文档-中文版.zip

    Maven坐标:javax.servlet:javax.servlet-api:4.0.1; 标签:javax、servlet、api、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档...

    javax.servlet-api-3.1-b04.jar中文文档.zip

    javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...

    javax.servlet-api-4.0.0-b01.jar中文文档.zip

    javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...

    javax.servlet-api-4.0.0-b07.jar中文文档.zip

    javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...

Global site tag (gtag.js) - Google Analytics