Spring Boot 带有Jackson的Sping Boot 3本机映像

dpiehjr4  于 2022-12-26  发布在  Spring
关注(0)|答案(1)|浏览(264)

我试图设置一个新的应用程序与最新的SpringBoot 3和一切工作正常,直到我尝试创建和运行我的应用程序与本机编译。只是为了您的参考,这里是我从运行单元测试收到的错误:

Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `*****`: cannot deserialize from Object value (no delegate- or property-based Creator): this appears to be a native image, in which case you may need to configure reflection for the class that is to be deserialized
 at [Source: (String)"[{"T":"success","msg":"authenticated"}]"; line: 1, column: 3] (through reference chain: java.util.ArrayList[0])
       com.fasterxml.jackson.databind.DeserializationContext.reportBadDefinition(DeserializationContext.java:1909)
       com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:408)
       com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1349)
       com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1417)
       com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:352)

我正在尝试将JSON字符串转换为Object。当我将其作为常规JAR运行时,它工作正常,但当我使用Navite(GraalVM)编译时,它失败了。

6ss1mwsb

6ss1mwsb1#

在Spring Native中,Jackson不知道如何在事先不了解对象的情况下对其进行序列化/反序列化,因为它必须在编译时知道所有类型。
要在原生模式下运行应用,您需要注册提示,并了解所需的代理、反射方法、其他资源文件/路径或要序列化/反序列化的对象。
要这样做,实现RuntimeHintsRegistrar接口。你可以在文档中看到一个示例

相关问题