use*_*mda 6 serialization maven dropwizard jackson-modules
我遇到了以下错误
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)
Run Code Online (Sandbox Code Playgroud)
我检查了看哪些版本的jackson-datatype-joda可用.似乎maven排除了所有版本不匹配.
这可能导致序列化错误的任何其他原因?
Iva*_*tov 10
问题是在maven依赖项中(介意它可能是传递的)你有jackson-datatype-joda和jackson-databind的不兼容版本.在jackson-databind的SerializationFeature类缺少WRITE_DURATIONS_AS_TIMESTAMPS字段的意义上是不兼容的.要查看maven带来的依赖关系,您可以在终端中运行以下命令(或者您可以使用IDE的maven插件来搜索和分析maven依赖关系树):
mvn dependency:tree | grep databind
Run Code Online (Sandbox Code Playgroud)
结果很可能是这样的:
[INFO] | +- com.fasterxml.jackson.core:jackson-databind:jar:2.4.1:compile
Run Code Online (Sandbox Code Playgroud)
课程版本可能有所不同,但重要的是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>
Run Code Online (Sandbox Code Playgroud)
如果它不是传递依赖,则需要更新jackson-databind的版本.
我通过使用以下依赖项解决了这个问题,因为此依赖项已覆盖使用的任何其他版本:
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-joda</artifactId>
<version>2.5.3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7241 次 |
| 最近记录: |