【发布时间】:2022-01-05 16:21:25
【问题描述】:
在 Wildfly 15 上运行的 JEE 项目中,我正在尝试将日志配置为 json 格式。为最近的一些 Spring Boot 项目复制我所做的数十次,我将 net.logstash.logback:logstash-logback-encoder:6.6 添加为 runtimeOnly 依赖项,因为我计划有一个 logback.xml 配置文件。
在构建我的应用程序并运行测试时,添加此依赖项会使某些测试失败:某些控制器无法再序列化 LocalDateTime。
Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type `java.time.LocalDateTime` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling (through reference chain: de.gefa.tankkarte.common.port.adapter.restapi.RestServiceErrorResponseEntity["timestamp"])
at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:77)
at com.fasterxml.jackson.databind.SerializerProvider.reportBadDefinition(SerializerProvider.java:1276)
at com.fasterxml.jackson.databind.ser.impl.UnsupportedTypeSerializer.serialize(UnsupportedTypeSerializer.java:35)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:770)
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319)
at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1514)
at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:1006)
at org.jboss.resteasy.plugins.providers.jackson.ResteasyJackson2Provider.writeTo(ResteasyJackson2Provider.java:328)
at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.writeTo(AbstractWriterInterceptorContext.java:137)
我不明白为什么应该用于日志记录的依赖项会干扰 REST 响应的构建方式......以及 jackson-datatype-jsr310 IS 类路径的一部分。当我运行依赖项任务时,我得到了这个:
runtimeClasspath - Runtime classpath of source set 'main'.
...
+--- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.10.4 -> 2.12.0
| +--- com.fasterxml.jackson.core:jackson-annotations:2.12.0
| | \--- com.fasterxml.jackson:jackson-bom:2.12.0
| | +--- com.fasterxml.jackson.core:jackson-annotations:2.12.0 (c)
| | +--- com.fasterxml.jackson.core:jackson-core:2.12.0 (c)
| | +--- com.fasterxml.jackson.core:jackson-databind:2.12.0 (c)
| | \--- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.0 (c)
| +--- com.fasterxml.jackson.core:jackson-core:2.12.0
| | \--- com.fasterxml.jackson:jackson-bom:2.12.0 (*)
| +--- com.fasterxml.jackson.core:jackson-databind:2.12.0
| | +--- com.fasterxml.jackson.core:jackson-annotations:2.12.0 (*)
| | +--- com.fasterxml.jackson.core:jackson-core:2.12.0 (*)
| | \--- com.fasterxml.jackson:jackson-bom:2.12.0 (*)
| \--- com.fasterxml.jackson:jackson-bom:2.12.0 (*)
...
+--- net.logstash.logback:logstash-logback-encoder:6.6
| \--- com.fasterxml.jackson.core:jackson-databind:2.12.0 (*)
我真的不明白这种冲突的方式和原因......
【问题讨论】:
标签: java gradle jackson-databind