Maven的包依赖冲突可引发java.lang.IncompatibleClassChangeError错误

新版API上线后,发现LOG文件没有正常输出。查看Tomcat的Log文件发现如下的错误信息

May 29, 2015 7:56:21 AM com.sun.xml.ws.server.sei.EndpointMethodHandler invoke
SEVERE: Found class ch.qos.logback.core.spi.CyclicBufferTracker, but interface was expected
java.lang.IncompatibleClassChangeError: Found class ch.qos.logback.core.spi.CyclicBufferTracker, but interface was expected    

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

ch.qos.logback.core.spi.CyclicBufferTracker是logback-core中的一个类,通过Eclipse的Dependency Hierarchy工具,对pom.xml中的包依赖关系,使用logback-core关键字进行Filter:

果然发现某一个引用的依赖包中,依赖了1.0.3版本的logback-core,和本工程所依赖的1.1.2版本,产生了冲突。

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

时间: 2024-10-12 03:42:42

Maven的包依赖冲突可引发java.lang.IncompatibleClassChangeError错误的相关文章

Jackson包依赖冲突,出现NoSuchMethodError异常

Jackson异常信息:java.lang.NoSuchMethodError java.lang.NoSuchMethodError: com.fasterxml.jackson.datatype.joda.ser.JodaDateSerializerBase.findFormatOverrides(Lcom/fasterxml/jackson/databind/SerializerProvider;Lcom/fasterxml/jackson/databind/BeanProperty;Lj

java.lang.IncompatibleClassChangeError:可以考虑是否是jar包冲突

一.背景:启动tomcat的时候,报错: java.lang.IncompatibleClassChangeError: class org.springframework.core.type.classreading.ClassMetadataReadingVisitor has interface org.springframework.asm.ClassVisitor as super class 二.原因: spring-test的版本号跟spring-core等相关的spring版本不

maven web 项目中启动报错java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener

本篇文章主要介绍了"maven web 项目中启动报错java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener ",主要涉及到maven web 项目中启动报错java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener 方面的内容,对于maven web 项目中启动报错jav

hadoop2.6.0+hive1.2启动报错java.lang.IncompatibleClassChangeError

java.lang.IncompatibleClassChangeError 不兼容的类变化错误.当正在执行的方法所依赖的类定义发生了不兼容的改变时,抛出该异常.一般在修改了应用中的某些类的声明定义而没有对整个应用重新编译而直接运行的情况下,容易引发该错误. [报错信息] [ERROR] Terminal initialization failed; falling back to unsupported java.lang.IncompatibleClassChangeError: Found

解决java.lang.IncompatibleClassChangeError

今天整理了Maven的pom.xml文件后,把多个项目用maven集成在了一起,结果在启动Tomcat的时候,遇到一个奇葩的错误: 严重: Servlet [spring] in web application [/AbcWeb] threw load() exception java.lang.IncompatibleClassChangeError: class org.springframework.core.type.classreading.ClassMetadataReadingVi

一个java.lang.IncompatibleClassChangeError的问题解决

引入一个第三方库做一个功能,依往常一样,引入对应的pom,对方的包里是有mina的,所以调用的相应的功能的时候报如下错误. Exception in thread "pool-18-thread-1" java.lang.IncompatibleClassChangeError at org.apache.mina.core.filterchain.DefaultIoFilterChain.register(DefaultIoFilterChain.java:267) at org.a

[ERROR] Terminal initialization failed; falling back to unsupported java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected

1:出现此种错误应该是jar版本包冲突了,启动hive的时候,由于hive依赖hadoop,启动hive,会将hadoop的配置以及jar包等等导入到hive中,导致jar包版本冲突,下面贴一下错误,然后贴一下解决方法: 1 [[email protected] bin]# ./hive 2 3 Logging initialized using configuration in jar:file:/home/hadoop/soft/apache-hive-1.2.1-bin/lib/hive-

【JUnit 报错】java.lang.IncompatibleClassChangeError

使用Junit 测试spring时候报错: 1 java.lang.IncompatibleClassChangeError: class org.springframework.core.LocalVariableTableParameterNameDiscoverer$ParameterNameDiscoveringVisitor has interface org.springframework.asm.ClassVisitor as super class 2 at java.lang.

【eclipse】 怎么解决java.lang.NoClassDefFoundError错误

前言 在日常Java开 发中,我们经常碰到java.lang.NoClassDefFoundError这样的错误,需要花费很多时间去找错误的原因,具体是哪个类不见了?类 明明还在,为什么找不到?而且我们很容易把java.lang.NoClassDefFoundError和 java.lang.ClassNotfoundException这两个错误搞混,事实上这两个错误是完全不同的.我们往往花费时间去不断尝试一些其他 的方法去解决这个问题,而没有真正去理解这个错误的原因.这篇文章就是通过解决NoC