【问题标题】:java.lang.NoSuchFieldError: ACCEPT_CASE_INSENSITIVE_VALUESjava.lang.NoSuchFieldError: ACCEPT_CASE_INSENSITIVE_VALUES
【发布时间】:2020-04-11 02:42:46
【问题描述】:

我有一个 Spring Boot 2 项目。 型号是

@Entity
@SequenceGenerator(name = "climate_gen", sequenceName = "climate_gen", initialValue = 100)
public class Climate {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "climate_gen")
    private long id;

    private float temperature;
    private float humidity;
    @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd'T'HH:mm:ss")
    private LocalDateTime date;
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "location_id", nullable = false)
    private Location location;

数据库有默认记录,使用 curl 获取这些记录。但是如果我尝试发帖

curl -H "Authorization: Bearer $TOKEN" -k -w "\n" -X POST -d '{"temperature":15.3,"humidity":65.4,"date":"2019-12-17T11:51:00","location":{"id":1}}' -H "Content-Type: application/json" https://mint191:8453/api/v1/climates

{"timestamp":"2019-12-18T13:53:22.473+0000","status":500,"error":"Internal Server Error","message":"ACCEPT_CASE_INSENSITIVE_VALUES","path":"/api/v1/climates"}

而日志输出是

2019-12-18 13:53:42.056 错误 11401 --- [nio-8453-exec-8] o.a.c.c.C.[.[.[/].[dispatcherServlet] :Servlet.service() for 带有路径 [] 的上下文中的 servlet [dispatcherServlet] 引发异常 [处理程序调度失败;嵌套异常是 java.lang.NoSuchFieldError: ACCEPT_CASE_INSENSITIVE_VALUES] 与根 原因

java.lang.NoSuchFieldError: ACCEPT_CASE_INSENSITIVE_VALUES 在 com.fasterxml.jackson.datatype.jsr310.deser.JSR310DateTimeDeserializerBase.acceptCaseInsensitiveValues(JSR310DateTimeDeserializerBase.java:126) ~[jackson-datatype-jsr310-2.10.1.jar!/:2.10.1] 在 com.fasterxml.jackson.datatype.jsr310.deser.JSR310DateTimeDeserializerBase.createContextual(JSR310DateTimeDeserializerBase.java:86) ~[jackson-datatype-jsr310-2.10.1.jar!/:2.10.1]

我还有其他几个由字符串和引用组成的模型。这些都可以毫无问题地创建。

搜索了一下,我可能必须使用 ObjectMapper 并启用 ACCEPT_CASE_INSENSITIVE_VALUE 功能。如果是这样,我是否必须在服务级别进行设置?控制器?型号?

但在更一般的情况下,这里实际发生了什么?杰克逊在抱怨什么,为什么是这个模型而不是其他模型?

最后,因为没有一个字段不为空,我尝试发布一系列请求,每个请求都缺少一个字段。在每种情况下,结果都相同。

问候,

【问题讨论】:

    标签: java spring-data-jpa jackson-databind


    【解决方案1】:

    这是由于杰克逊库版本不兼容造成的。例如,jackson-core 的版本可能与 jackson-databind 的版本不同。运行

    mvn dependency:tree -Dverbose
    

    查找杰克逊版本以解决版本不兼容问题。

    参考这个 - https://github.com/FasterXML/jackson-modules-java8/issues/81

    【讨论】:

      猜你喜欢
      • 2015-10-10
      • 2013-06-05
      • 2013-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-04
      • 2014-11-04
      相关资源
      最近更新 更多