2015-10-26 31 views
5

私が利用可能なジャクソン・データ型-ジョダのどのバージョンを確認するためにチェックし、次のエラーjackson-databindバージョンの不一致によるシリアル化エラー?

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) 

に実行しています。 mavenはすべてのバージョンの不一致を除外しているようです。

これは、シリアル化エラーの原因になる可能性があります。

答えて

3

私はそれがこの依存関係が使用される任意の他のバージョンをオーバーライドしているとして、次の依存関係を使用して解決しまった:

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

問題は、Mavenの依存関係(それは推移いずれかになりますことを心)の中で、あなたがジャクソン・データ型-ジョダの互換性のないバージョンジャクソンデータバインドを持っているということです。その意味で互換性がありませんjackson-databindSerializationFeatureクラスには、WRITE_DURATIONS_AS_TIMESTAMPSフィールドがありません。 Mavenのは、あなたがターミナルで次のコマンドを実行することができますどのような依存関係を確認するには(またはあなたがMavenの依存関係ツリーを検索し、分析するためのIDEの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> 

を。

0

私は同じエラーが発生しました。私はWEB-INF/lib /の下にすべてのjackson * 2.7.0ライブラリを含めていましたが、私はまだそのエラーを受けていました。私はwildfly 8.2を使用しています。モジュールの下にjackson 2.4.1ライブラリがあり、何とかその場所から2.4.1 jarをロードしていました。そこで手動で2.7.0にアップグレードして問題を修正しなければなりませんでした。私は、展開設定ファイルでjackson jarsをロードするように言及していないと、野生のジャーをロードしないという印象を受けました。私は間違っていたと思う。

関連する問題