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;Ljava/lang/Class;)Lcom/fasterxml/jackson/annotation/JsonFormat$Value;
java.lang.NoSuchMethodError: com.fasterxml.jackson.datatype.joda.ser.JodaDateSerializerBase.findFormatOverrides(Lcom/fasterxml/jackson/databind/SerializerProvider;Lcom/fasterxml/jackson/databind/BeanProperty;Ljava/lang/Class;)Lcom/fasterxml/jackson/annotation/JsonFormat$Value;
at com.fasterxml.jackson.datatype.joda.ser.JodaDateSerializerBase.createContextual(JodaDateSerializerBase.java:49)
at com.fasterxml.jackson.databind.SerializerProvider.handleSecondaryContextualization(SerializerProvider.java:944)
at com.fasterxml.jackson.databind.SerializerProvider.findValueSerializer(SerializerProvider.java:495)
at com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap.findAndAddSecondarySerializer(PropertySerializerMap.java:90)
at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer._findAndAddDynamic(ObjectArraySerializer.java:394)
at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serializeContents(ObjectArraySerializer.java:253)
at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serialize(ObjectArraySerializer.java:216)
at com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer.serialize(ObjectArraySerializer.java:26)
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:130)
at com.fasterxml.jackson.databind.ObjectMapper.writeValue(ObjectMapper.java:2383)
at com.fasterxml.jackson.core.base.GeneratorBase.writeObject(GeneratorBase.java:324)
at com.wormpex.fd.wclient.rpc 大专栏  Jackson包依赖冲突,出现NoSuchMethodError异常.dubbo.filter.AbstractAccessLogFilter$AccessLogSerializer.serialize(AbstractAccessLogFilter.java:350)
at com.wormpex.fd.wclient.rpc.dubbo.filter.AbstractAccessLogFilter$AccessLogSerializer.serialize(AbstractAccessLogFilter.java:282)
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:130)
at com.fasterxml.jackson.databind.ObjectMapper._configAndWriteValue(ObjectMapper.java:3559)
at com.fasterxml.jackson.databind.ObjectMapper.writeValue(ObjectMapper.java:2893)
at com.wormpex.common.json.JsonMapper.writeValue(JsonMapper.java:1011)
... 74 common frames omitted

分析

出现NoSuchMethodError,一般会有两种Case:

  1. jar包冲突,相同jar包,依赖多个版本

    这种情况往往是maven依赖导致的,编译时,可能会加载旧版本jar,导致运行时无法找到某个method

  2. class冲突,不同的jar包中,存在相同的包目录结构,相同class名称

    这种情况比较特殊。举个栗子
    某个工程依赖了jackson-3.1.2.jar, 同时这个工程又依赖了foo-1.1.0.jar
    如果foo包中也需要依赖jackson包,但是没有直接依赖,而是将jackson包中的类,以同包同类名拷贝到foo包中,
    当类加载时,可能会优先加载foo包中的jackson类,从而导致不会再加载jackson包中的类,最终运行时无法找到某个method

原文地址:https://www.cnblogs.com/wangziqiang123/p/11697018.html

时间: 2024-10-09 06:29:45

Jackson包依赖冲突,出现NoSuchMethodError异常的相关文章

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.IncompatibleClassChang

Maven解决类包依赖冲突

使用maven最烦人的可能就是类包之间的版本冲突引发的问题了,类包冲突的一个很大的原因即产类包之间的间接依赖引起的.每个显式声明的类包都会依赖于一些其它的隐式类包,这些隐式的类包会被maven间接引入进来,因而可能造成一个我们不想要的类包的载入,严重的甚至会引起类包之间的冲突. 要解决这个问题,首先就是要查看pom.xml显式和隐式的依赖类包,然后通过这个类包树找出我们不想要的依赖类包,手工将其排除在外就可以了. 下面,通过一个例子来说明: 我的项目使用testng进行测试,使用了untilis

解决maven的jar包依赖冲突的两种方案

方案1 直接点,直接exculde掉 1.先去下载maven helper的plugin   https://segmentfault.com/a/1190000018138945 2.直接exculde掉 选中冲突的jar包,然后exculde 方案2 两个版本冲突, 在项目pom.xml声明使用的版本 原文地址:https://www.cnblogs.com/zhangchiblog/p/11175340.html

使用maven-shade-plugin插件解决spark依赖冲突问题

依赖冲突:NoSuchMethodError,ClassNotFoundException   当用户应用于Spark本身依赖同一个库时可能会发生依赖冲突,导致程序奔溃.依赖冲突表现为在运行中出现NoSuchMethodError或者ClassNotFoundException的异常或者其他与类加载相关的JVM异常. 此时,若能确定classpath中存在这个包,则错误是因为classpath中存在2个不同版本的jar包了,比如常见的log4j,你在classpath中添加了log4j.jar,

springmvc与hadoop整合时jackson包冲突

因项目需要,将springmvc和hbase整合,启动tomcat时报错如下: SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListenerorg.springframework.beans.factory.BeanCreationException: Error creating bea

Springmvc 中org.springframework.http.converter.json.MappingJackson2HttpMessageConverter依赖jackson包

1,问题详情:Spring使用4.3.5.Release版本后 在SpringMvc配置文件中配置json 解析器后出现报错信息 [org.springframework.web.context.ContextLoader]Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.

Maven依赖jar包版本冲突解决方案

1.为何会产生依赖冲突 Maven中的传递性依赖机制,一方面简化了依赖声明,另一方面如果传递依赖有可能引发版本冲突.例如:有这样的依赖关系:a->b->c->x(1.0).a->d->x(2.0),对于这样的冲突Maven给出的方案是:第一原则:路径最近者优先,第二原则:在路径长度相等的前提下,pom中的依赖声明的顺序决定了谁会被解析. 2.如何排除依赖 pom如下: <dependency> ...... <exclusions> <exclu

依赖冲突的原因以及解决办法

原创 鸭血粉丝 Java极客技术 0x00. 前言 依赖冲突是日常开发中经常碰到的过程,如果运气好,并不会有什么问题.偏偏阿粉有点背,碰到好几次生产问题,排查一整晚,最后发现却是依赖冲突的引起的问题. 没碰到过这个问题同学可能没什么感觉,阿粉举两个最近碰到例子,让大家感受一些. 例子 1: 我们公司有个古老的业务基础包 A.B,C 业务依赖这个包.某个团队拷贝 A 的部分代码进行重构,类名与路径完全一样,然后重新打包成 D 发布. 一次业务改动,B 业务也引入了 D 包,测试环境运行的时候,一切

程序员需要了解依赖冲突的原因以及解决方案

0x00. 前言 依赖冲突是日常开发中经常碰到的过程,如果运气好,并不会有什么问题.偏偏小黑哥有点背,碰到好几次生产问题,排查一整晚,最后发现却是依赖冲突的引起的问题. 没碰到过这个问题同学可能没什么感觉,小黑哥举两个最近碰到例子,让大家感受一些. 例子 1: 我们公司有个古老的业务基础包 A.B,C 业务依赖这个包.某个团队拷贝 A 的部分代码进行重构,类名与路径完全一样,然后重新打包成 D 发布. 一次业务改动,B 业务也引入了 D 包,测试环境运行的时候,一切 OK,但是在生产运行时,却抛