Tasos Stamadianos
01/27/2019, 6:53 PM17:10:33.977 [main] ERROR bees.stream.MessageStream - [MessageStream.kt:42] || - Message deserialization failed.
kotlin.reflect.full.IllegalCallableAccessException: java.lang.IllegalAccessException: class kotlin.reflect.jvm.internal.calls.CallerImpl$Constructor cannot access a member of class bees.stream.MessageStream$SystemMessage with modifiers "public"
at kotlin.reflect.jvm.internal.KCallableImpl.call(KCallableImpl.kt:224)
at kotlin.reflect.jvm.internal.KCallableImpl.callDefaultMethod$kotlin_reflect_api(KCallableImpl.kt:152)
at kotlin.reflect.jvm.internal.KCallableImpl.callBy(KCallableImpl.kt:110)
at com.squareup.moshi.kotlin.reflect.KotlinJsonAdapter.fromJson(KotlinJsonAdapter.kt:104)
at com.squareup.moshi.JsonAdapter$2.fromJson(JsonAdapter.java:137)
at com.squareup.moshi.JsonAdapter.fromJson(JsonAdapter.java:41)
at bees.stream.MessageStream.onMessages(MessageStream.kt:39)
at bees.stream.kafka.KafkaConsumerProducerStream.start(KafkaProducerConsumerStream.kt:64)
at bees.BeesKt.main(bees.kt:65)
Caused by: java.lang.IllegalAccessException: class kotlin.reflect.jvm.internal.calls.CallerImpl$Constructor cannot access a member of class bees.stream.MessageStream$SystemMessage with modifiers "public"
at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:361)
at java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:591)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
at kotlin.reflect.jvm.internal.calls.CallerImpl$Constructor.call(CallerImpl.kt:41)
at kotlin.reflect.jvm.internal.KCallableImpl.call(KCallableImpl.kt:106)
... 8 common frames omitted
17:10:33.989 [main] DEBUG bees.stream.MessageStream - [MessageStream.kt:83] || - Completed message processing. Returning 0 responses.
I have a Moshi instance whose job it is to do this deserialization. The class it wants to create is:
private data class SystemMessage(val command: String, val sessionId: UUID, val commandId: UUID, val data: Any)
. This is private to the class within the module.
This only happens when the app is running for longer periods, if I restart and try again it works fine. When I search "java cannot access a member of a class with modifiers public", I get results which indicate that the class cannot be instantiated since it's private to its enclosing class. However, this doesn't explain why it works for some time if I restart the app. I've tried with JVM 8 and JVM 11, same error on both. This was built with Kotlin 1.3.10, but I'm going to try 1.3.20 now.
Any help would be greatly appreciated 🙂robstoll
01/27/2019, 6:57 PMTasos Stamadianos
01/27/2019, 6:59 PMTasos Stamadianos
01/27/2019, 7:00 PMrobstoll
01/27/2019, 7:00 PMrobstoll
01/27/2019, 7:00 PMTasos Stamadianos
01/27/2019, 7:01 PMrobstoll
01/27/2019, 7:02 PMrobstoll
01/27/2019, 7:03 PMTasos Stamadianos
01/27/2019, 7:03 PMrobstoll
01/27/2019, 7:04 PMTasos Stamadianos
01/27/2019, 7:05 PMTasos Stamadianos
01/27/2019, 7:05 PMrobstoll
01/27/2019, 7:06 PMDico
01/27/2019, 7:08 PMTasos Stamadianos
01/27/2019, 7:08 PMrobstoll
01/27/2019, 7:09 PMTasos Stamadianos
01/27/2019, 7:09 PMSystemMessage
class is privately nested in a larger classTasos Stamadianos
01/27/2019, 7:09 PMDavid Hamilton
02/15/2022, 1:39 PMDavid Hamilton
02/15/2022, 8:16 PM