Javatar81 / devjoy

2 stars 0 forks source link

Reflection used to deserialize GiteaSpec which fails in native executable #51

Closed Javatar81 closed 7 months ago

Javatar81 commented 7 months ago
Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `io.devjoy.gitea.k8s.model.GiteaSpec`: 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
257
at [Source: (BufferedInputStream); line: 1, column: 2347] (through reference chain: io.fabric8.kubernetes.api.model.DefaultKubernetesResourceList["items"]->java.util.ArrayList[0]->io.devjoy.gitea.k8s.model.Gitea["spec"])
258
at com.fasterxml.jackson.databind.DeserializationContext.reportBadDefinition(DeserializationContext.java:1915)
259
at com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:414)
260
at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1355)
261
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1421)
262
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:352)
263
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185)
264
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
265
at io.fabric8.kubernetes.model.jackson.SettableBeanPropertyDelegate.deserializeAndSet(SettableBeanPropertyDelegate.java:134)
266
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:314)
267
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177)
268
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeFromArray(CollectionDeserializer.java:359)
269
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:244)
270
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:28)
271
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
272
at io.fabric8.kubernetes.model.jackson.SettableBeanPropertyDelegate.deserializeAndSet(SettableBeanPropertyDelegate.java:134)
273
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:314)
274
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177)
275
at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323)
276
at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2105)
277
at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1481)
278
at io.fabric8.kubernetes.client.utils.KubernetesSerialization.unmarshal(KubernetesSerialization.java:254)
279
... 34 more
Javatar81 commented 7 months ago

Related issue: https://github.com/quarkusio/quarkus/issues/20200

Javatar81 commented 7 months ago

Quarkus extension quarkus-operator-sdk registers for reflection according to: https://docs.quarkiverse.io/quarkus-operator-sdk/dev/index.html

When classes are located in another package we need to do the registration manually: https://quarkus.io/guides/writing-native-applications-tips#registering-for-reflection

Javatar81 commented 7 months ago

Should be generated automatically. This has been added via this PR: https://github.com/quarkusio/quarkus/pull/38586