这几天来公司,公司的SVN坏掉了,然后项目还比较大,是一个分布式的,然后同事就把项目发我了。我在myeclipse里面导入项目了,把相应的jar包也建了个人的library导入了项目,现在项目不报错了,但是当我部署到tomcat启动服务器后,访问入口包了这么一个错:java.lang.ClassCastException: org.apache.catalina.util.DefaultAnnotationProcessor
cannot be cast to org.apache.AnnotationProcessor



上面的报错意思就是说类型转换出错。我当时一看这个错应该不是代码级别的错误,遇见这种jar包冲突肯定是导入jar重复了。然后去百度下,网上的博客里面关于这个错误的处理也挺多,这里我自己总结整理下。



首先出现这个错的原因是:是tomcat的lib文件夹jar包和项目的lib文件下的jar包冲突了。Tomcat中catalina.jar和jasper.jar都有AnnotationProcessor接口,所以运行时,就出错了:java.lang.ClassCastException: org.apache.catalina.util.DefaultAnnotationProcessor。检查是不是这个原因的话,可以去翻自己项目的build
path,看看导入的包是不是重复导入了tomcat下lib包。我自己去看了一下,还真的是,那意思就是说部署项目在tomcat下面的时候这些包会自动放入我们的项目的path里面,但是我们自己的项目里面又有这些包了,相当于是这些包就导了2边,所以jar包冲突了,报了上面那个类型转换异常。



有2种解决的办法:1,把项目下lib文件下和tomcat的jar的重复的全部删除。也就是说把自己的项目里面重复导入tomcat lib下面的那些包都去掉,由于我是同事直接发给我的项目,里面还有好多的项目是java项目,所以我的项目里面要是直接去掉这些包的话代码就会报错,所以我采取了第2种方式



2,修改了tomcat里的context.xml文件,在context 元素下添加 <Loader delegate="true" />,现在就正常了。

百度了下这个Loader元素,关于它的解释如下,注意下delegate这个元素就好了。

Loader对象可出现在Context中以控制Java类的加载。虽然可以改变loadet类,不过一般不会这样做,所以在下面的属性中,我们们列出了标准的属性和“一般”类加载器所接受的属性。

    属性:className、含义:org.apache.catalina.Loader实现类名、默认值:org.apache.catalina.loader.WebappClassLoader

    属性:delegate、含义:True代表使用正式的Java代理模式(先询问父类的加载器);false代表先在Web应用程序中寻找。警告:如果不知道如何处理,则不要改变这一属性值、默认值:FALSE

    属性:loaderClass、含义:类加载器、默认值:org.apache.catalina.loader.WebappClassLoader

    属性:reloadable、含义:与Context下的意义相同。这时的值会改写Context中的值、默认值:FALSE

    属性:workDir、含义:存放临时文件的目录、默认值:CATALINA_BASE下的临时目录(如果不显示设定CATALINA_TOME的值,则是CATALINA_BASE)

org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.AnnotationProcessor的更多相关文章

  1. 转载:org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.Annotation

    转载:org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.Annotation (2012 ...

  2. JAVA错误:org.apache.jasper.JasperException: java.lang.ClassCastException:org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apach

    解决方法一(一般情况加均可解决问题): 修改了tomcat里的context.xml文件,在context 元素下添加  <Loader delegate="true"/&g ...

  3. org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.ap解决方案

    非常可能是因为tomcat的lib文件夹jar包和项目的lib文件下的jar包冲突了 把项目下lib文件下和tomcat的jar的重复的全部删除. 注意,如果你是先建flex工程然后转成web形式的, ...

  4. org.apache.catalina.core.DefaultInstanceManager cannot be cast to org.apache.tomcat.InstanceManager

    1.控制台报错信息 严重: Servlet.service() for servlet [jsp] in context with path [/Resource] threw exception [ ...

  5. SpringMVC文件上传报错org.apache.catalina.connector.RequestFacade cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest

    错误信息: java.lang.ClassCastException: org.apache.catalina.connector.RequestFacade cannot be cast to or ...

  6. java.lang.ClassCastException: org.apache.catalina.connector.RequestFacade cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest

    转自:https://blog.csdn.net/iteye_17476/article/details/82651580 java.lang.ClassCastException: org.apac ...

  7. 异常-----springmvc + ajaxfileupload解决ajax不能异步上传图片的问题。java.lang.ClassCastException: org.apache.catalina.connector.RequestFacade cannot be cast to org.springframework.web.multipart.

    说明这个问题产生的原因主要是form表单上传图片的时候必须是Content-Type:"multipart/form-data,这种格式的,但是ajax在页面不刷新的情况下去加载的时候只会把 ...

  8. WARNING [main] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [] milliseconds.

    编译安装tomcat-native和tomcat-deamon以后,发现toomcat启动很慢,好久才有响应.以下日志供参考: 11-Sep-2017 12:19:28.102 INFO [main] ...

  9. tomcat启动时间5分钟左右org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [342,445] milliseconds.

    org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance ...

随机推荐

  1. Scala的安装,入门,学习,基础

    1:Scala的官方网址:http://www.scala-lang.org/ 推荐学习教程:http://www.runoob.com/scala/scala-tutorial.html Scala ...

  2. CSS属性:背景属性(图文详解)

    本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. background系列属性 常见背景属性 CSS样式中,常见的背景属性 ...

  3. 聊聊ThreadLocal原理以及使用场景-JAVA 8源码

    相信很多人知道ThreadLocal是针对每个线程的,但是其中的原理相信大家不是很清楚,那咱们就一块看一下源码. 首先,我们先看看它的set方法.非常简单,从当前Thread中获取map.那么这个ge ...

  4. MySQL innodb_flush_method

    innodb_flush_method这个参数控制着innodb数据文件及redo log的打开.刷写模式,对于这个参数,文档上是这样描述的: 有三个值:fdatasync(默认),O_DSYNC,O ...

  5. 【转载】HDFS 上传文件不均衡和Balancer太慢的问题

    向HDFS上传文件,如果是从某个datanode开始上传文件,会导致上传的数据优先写满当前datanode的磁盘,这对于运行分布式程序是非常不利的. 解决的办法: 1.从其他非datanode节点上传 ...

  6. EMMC与nand flash的区别【转】

    1.NAND Flash 是一种存储介质,要在上面读写数据,外部要加主控和电路设计. 2.eMMC是NAND flash+主控IC ,对外的接口协议与SD.TF卡类似:对厂家而言简化了电路设计,降低了 ...

  7. POJ 3264 Balanced Lineup【线段树区间查询求最大值和最小值】

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 53703   Accepted: 25237 ...

  8. poj_2528Mayor's posters(线段树)

    poj_2528Mayor's posters(线段树) 标签: 线段树 题目连接 Mayor's posters Time Limit: 1000MS Memory Limit: 65536K To ...

  9. c语言几个松散的地方(不足的地方,不严谨的地方,它容易出错的地方)。

    c语言是面向过程的语言,是弱类型语言,c语言的源代码基本就是无数个函数的堆砌.即很多函数就组成c语言源代码了,也即它的源代码基本就是函数构成的. C语言里面的test()和test(void)是不一样 ...

  10. Springboot-shiro-redis实现登录认证和权限管理

    Springboot-shiro-redis实现登录认证和权限管理 在学习之前: 首先进行一下Apache Shiro和Shiro比较: Apache Shiro是一个功能强大.灵活的,开源的安全框架 ...