-
Notifications
You must be signed in to change notification settings - Fork 842
Closed
Labels
Description
Describe the bug
I am getting this exception:
com.esotericsoftware.kryo.KryoException: java.lang.IllegalAccessException: class com.esotericsoftware.kryo.serializers.RecordSerializer cannot access a member of class mypkg.A$B with modifiers "public"
at com.esotericsoftware.kryo.serializers.RecordSerializer.componentValue(RecordSerializer.java:208)
at com.esotericsoftware.kryo.serializers.RecordSerializer.write(RecordSerializer.java:92)
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:642)
at com.esotericsoftware.kryo.serializers.ReflectField.write(ReflectField.java:70)
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:108)
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:642)
at com.esotericsoftware.kryo.serializers.ReflectField.write(ReflectField.java:70)
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:108)
at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:711)
...
Caused by: java.lang.IllegalAccessException: class com.esotericsoftware.kryo.serializers.RecordSerializer cannot access a member of class mypkg.A$B with modifiers "public"
at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:392)
at java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:674)
at java.base/java.lang.reflect.Method.invoke(Method.java:560)
at com.esotericsoftware.kryo.serializers.RecordSerializer.componentValue(RecordSerializer.java:206)
... 19 more
To Reproduce
public class A {
private static record B(String y) {}
private B x;
}
// serialized with:
kryo.writeClassAndObject(output, someA);
Environment:
- OS: Linux
- JDK Version: 17
- Kryo Version: 5.2.1
Additional context
There's no exception when the record is public.