【问题标题】:Serialization errors due to jackson-databind version mismatch?由于 jackson-databind 版本不匹配导致的序列化错误?
【发布时间】:2015-10-26 15:51:50
【问题描述】:

我遇到以下错误

java.lang.NoSuchFieldError: WRITE_DURATIONS_AS_TIMESTAMPS
    at com.fasterxml.jackson.datatype.joda.ser.DurationSerializer.<init>(DurationSerializer.java:28)
    at com.fasterxml.jackson.datatype.joda.ser.DurationSerializer.<init>(DurationSerializer.java:25)
    at com.fasterxml.jackson.datatype.joda.JodaModule.<init>(JodaModule.java:45)

我查看了可用的 jackson-datatype-joda 版本。看来maven已经排除了所有的版本不匹配。

还有其他可能导致序列化错误的原因吗?

【问题讨论】:

    标签: maven serialization dropwizard jackson-modules


    【解决方案1】:

    问题在于,在 maven 依赖项中(请注意它可能是传递依赖项),您的 jackson-datatype-jodajackson-databind 版本不兼容。不兼容是因为 jackson-databindSerializationFeature 类缺少 WRITE_DURATIONS_AS_TIMESTAMPS 字段。要查看 maven 带来了哪些依赖项,您可以在终端中运行以下命令(或者您可以使用 IDE 的 maven 插件来搜索和分析 maven 依赖项树):

    mvn dependency:tree | grep databind
    

    结果很可能是这样的:

    [INFO] |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.4.1:compile
    

    版本当然会有所不同,但重要的是 WRITE_DURATIONS_AS_TIMESTAMPS 字段仅在版本 2.5

    之后才可用

    您可以像这样排除传递依赖:

    <dependency>
      <groupId>group.id</groupId>
      <artifactId>artifact-id</artifactId>
      <version>${artifact.version}</version>
      <exclusions>
        <exclusion>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    

    如果它不是传递依赖,则需要更新 jackson-databind 的版本。

    【讨论】:

      【解决方案2】:

      我通过使用以下依赖项解决了它,因为此依赖项已覆盖使用的任何其他版本:

      <dependency>
          <groupId>com.fasterxml.jackson.datatype</groupId>
          <artifactId>jackson-datatype-joda</artifactId>
          <version>2.5.3</version>
      </dependency>
      

      【讨论】:

        【解决方案3】:

        我有同样的错误。我已将所有 jackson*2.7.0 库包含在 WEB-INF/lib/ 下,但我仍然收到该错误。我正在使用wildfly 8.2,它在模块下有jackson 2.4.1库,不知何故它从那个位置加载了2.4.1 jars。所以我不得不手动将它们升级到 2.7.0 来解决这个问题。我的印象是,如果我没有提到在部署配置文件中加载jackson jar,它就不会加载wildfly jar。我想我错了。

        【讨论】:

          猜你喜欢
          • 2021-10-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多