当前位置: 首页 > news >正文

Maven依赖构建版本冲突(实战cxf asm和cglib冲突)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myServices2': Invocation of init method failed; nested exception is java.lang.IncompatibleClassChangeError: Found class org.objectweb.asm.AnnotationVisitor, but interface was expected

 

Caused by: java.lang.IncompatibleClassChangeError: Found class org.objectweb.asm.AnnotationVisitor, but interface was expected

出现.IncompatibleClassChangeError异常了:

今天配置CXF2.4.2和spring4.0.2.RELEASE时一直再报:

Error creating bean with name 'myServices2': Invocation of init method failed; nested exception is java.lang.IncompatibleClassChangeError: Found class org.objectweb.asm.AnnotationVisitor, but interface was expected

Caused by: java.lang.IncompatibleClassChangeError: Found class org.objectweb.asm.AnnotationVisitor, but interface was expected

的错误,查看了自己的application-server.xml里面的bean配置没问题,找了一下午,最后发现是jar包冲突。

从字面含义分析,虚拟机期望使用的是一个Interface型的AnnotationVisitor,实际上Load进来的是一个Class型的。这种问题一般是由于Compile和Runtime使用的JAR包版本不一致导致的。而这种版本不一致,一般是由于Maven的包依赖冲突引起。

使用Ctrl+shift+T去查看org.objectweb.asm.AnnotationVisitor发现在maven项目依赖中发现一个Interface型的AnnotationVisitor一个class的AnnotationVisitor,这就发生了版本冲突问题,我们需要的是一个Interface,所以需要剔除掉class类型的AnnotationVisitor310c14e655f3952c4aa97093b4123e56400.jpg

通过Eclipse的Dependency Hierarchy工具,对pom.xml中的包依赖关系,使用asm.AnnotationVisitor关键字进行Filter:

我们清楚的看到在我们项目的依赖中依赖了一个asm并且AnnotationVisitor类型是class类型的,所以我们需要剔除掉asm-5.2.jar

asm-5.2.jar中是一个class

9d552e6dcd5b1d42a807db753ceb4d049ef.jpg

而在3.3下是一个interface

82b1623bbeb0388d95e595fca59cd8c6ddc.jpg

我们需要的是一个接口interface,所以需要剔除掉asm-5.2.jar

42fd3abb9db2b5780a35807b2c6e679101a.jpg

果然发现某一个引用的依赖包中,依赖了5.2版本的sam,和本工程所依赖的asm-3.3.jar版本,产生了冲突。

根据项目需要,调整pom文件选定所需要的JAR版本,解决包依赖冲突后,即可解决java.lang.IncompatibleClassChangeError问题。

转载于:https://my.oschina.net/u/3725191/blog/1973400

相关文章:

  • 【SublimeText】【DeleteBlankLines】使用说明
  • FTP服务器的三种用户创建(部分)
  • CentOS下的apache配置支持php
  • 洛谷P2668 斗地主
  • 使用 Traefik 的一些补充细节
  • Java 内存分配及垃圾回收机制初探
  • 密码学原理学习笔记
  • 杂谈
  • 07 numpy 一元函数
  • IBM AIX系统日志配置远程Syslog采集
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • css的transform属性让子元素在父元素里面垂直水平居中
  • 微信小程序的手机通讯录点击本页面跳转位置的代码详解
  • 阿里云搬家用。
  • 『中级篇』overlay网络和etcd实现多机的容器通信(31)
  • 自己简单写的 事件订阅机制
  • DOM的那些事
  • extjs4学习之配置
  • input实现文字超出省略号功能
  • JavaScript HTML DOM
  • JavaScript函数式编程(一)
  • Java编程基础24——递归练习
  • JS基础之数据类型、对象、原型、原型链、继承
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • PhantomJS 安装
  • Python 基础起步 (十) 什么叫函数?
  • Python实现BT种子转化为磁力链接【实战】
  • Python学习笔记 字符串拼接
  • rc-form之最单纯情况
  • session共享问题解决方案
  • Sublime text 3 3103 注册码
  • 盘点那些不知名却常用的 Git 操作
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 听说你叫Java(二)–Servlet请求
  • 物联网链路协议
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 在Unity中实现一个简单的消息管理器
  • ​VRRP 虚拟路由冗余协议(华为)
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (实战篇)如何缓存数据
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • .FileZilla的使用和主动模式被动模式介绍
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET gRPC 和RESTful简单对比
  • .NET企业级应用架构设计系列之结尾篇
  • .NET下的多线程编程—1-线程机制概述
  • @Transient注解
  • []指针