RESTEasy / Yasson throwing JsonbException: ... No default constructor found on EAP 7.4

Solution Verified - Updated -

Issue

  • We are using the JDK17 record definition as shown and RESTEasy / Yasson and getting this exception below:
public record RecordExample(String message) {
} 
Caused by: javax.json.bind.JsonbException: Cannot create instance of a class: class test.RecordExample, No default constructor found.
    at org.eclipse.yasson@1.0.10.redhat-00001//org.eclipse.yasson.internal.serializer.ObjectDeserializer.getInstance(ObjectDeserializer.java:101)
    at org.eclipse.yasson@1.0.10.redhat-00001//org.eclipse.yasson.internal.serializer.AbstractContainerDeserializer.deserialize(AbstractContainerDeserializer.java:65)
    at org.eclipse.yasson@1.0.10.redhat-00001//org.eclipse.yasson.internal.Unmarshaller.deserializeItem(Unmarshaller.java:62)
    at org.eclipse.yasson@1.0.10.redhat-00001//org.eclipse.yasson.internal.Unmarshaller.deserialize(Unmarshaller.java:51)
    at org.eclipse.yasson@1.0.10.redhat-00001//org.eclipse.yasson.internal.JsonBinding.deserialize(JsonBinding.java:59)
    at org.eclipse.yasson@1.0.10.redhat-00001//org.eclipse.yasson.internal.JsonBinding.fromJson(JsonBinding.java:66)
    at deployment.example.war//test.SampleResrouce.getJsonBind(SampleResrouce.java:49)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.jboss.resteasy.resteasy-jaxrs@3.15.7.Final-redhat-00001//org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:138)
    at org.jboss.resteasy.resteasy-jaxrs@3.15.7.Final-redhat-00001//org.jboss.resteasy.core.ResourceMethodInvoker.internalInvokeOnTarget(ResourceMethodInvoker.java:546)
...
  • Using RESTEasy / Yasson and getting this exception below with this class:
public class ClassExample {
  private String message;

  public ClassExample(String message) {
    this.message = message;
  }
  public String getMessage() {
    return message;
  }
  public void setMessage(String message) {
    this.message = message;
  }
}

This exception is thrown when jsonb tries to deserialize the class:

Caused by: javax.json.bind.JsonbException: Cannot create instance of a class: class test.ClassExample, No default constructor found.
    at org.eclipse.yasson@1.0.10.redhat-00001//org.eclipse.yasson.internal.serializer.ObjectDeserializer.getInstance(ObjectDeserializer.java:101)
    at org.eclipse.yasson@1.0.10.redhat-00001//org.eclipse.yasson.internal.serializer.AbstractContainerDeserializer.deserialize(AbstractContainerDeserializer.java:65)
    at org.eclipse.yasson@1.0.10.redhat-00001//org.eclipse.yasson.internal.Unmarshaller.deserializeItem(Unmarshaller.java:62)
    at org.eclipse.yasson@1.0.10.redhat-00001//org.eclipse.yasson.internal.Unmarshaller.deserialize(Unmarshaller.java:51)
    at org.eclipse.yasson@1.0.10.redhat-00001//org.eclipse.yasson.internal.JsonBinding.deserialize(JsonBinding.java:59)
    at org.eclipse.yasson@1.0.10.redhat-00001//org.eclipse.yasson.internal.JsonBinding.fromJson(JsonBinding.java:66)
    at deployment.example.war//test.SampleResrouce.getJsonBindClass(SampleResrouce.java:40)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.jboss.resteasy.resteasy-jaxrs@3.15.7.Final-redhat-00001//org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:138)

Environment

  • Red Hat JBoss Enterprise Application Platform (EAP) 7.4

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content