Using BindingReflectionHintsRegistrar
with records lead to this Jackson exception on native image runtime:
Exception in thread "main" com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Failed to access RecordComponents of type `nativeplayground.R`
at com.fasterxml.jackson.databind.SerializerProvider.reportBadDefinition(SerializerProvider.java:1300)
at com.fasterxml.jackson.databind.SerializerProvider._createAndCacheUntypedSerializer(SerializerProvider.java:1447)
at com.fasterxml.jackson.databind.SerializerProvider.findValueSerializer(SerializerProvider.java:544)
at com.fasterxml.jackson.databind.SerializerProvider.findTypedValueSerializer(SerializerProvider.java:822)
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:308)
at com.fasterxml.jackson.databind.ObjectMapper._writeValueAndClose(ObjectMapper.java:4568)
at com.fasterxml.jackson.databind.ObjectMapper.writeValueAsString(ObjectMapper.java:3821)
at nativeplayground.SerializeMain.main(SerializeMain.java:14)
For records, there has to be this in the reflect-config.json:
{
"name": "nativeplayground.R",
"allDeclaredMethods": true
}
It would be nice if BindingReflectionHintsRegistrar
would support records.