Получение NoClassDefFoundError при вызове сгенерированного метода serializer () - PullRequest
3 голосов
/ 16 апреля 2020

Я получаю NoClassDefFoundError при попытке вызвать метод Foo.serializer() в классе @Serializable.

Вот мой тестовый пример:

@Serializable
data class Foo(val data: String)

val jsonString = json.stringify(
  Foo.serializer(), // <= Error happens here
  Foo(data = "foo")
)

Попытка запуска код приводит к следующей трассировке стека:

java.lang.NoSuchMethodError: 'void kotlinx.serialization.internal.SerialClassDescImpl.<init>(java.lang.String, kotlinx.serialization.internal.GeneratedSerializer, int)'
    at com.example.Foo$$serializer.<clinit>(Foo.kt:7)
    at com.example.Foo$Companion.serializer(Foo.kt)

1 Ответ

4 голосов
/ 16 апреля 2020

Это результат несовпадения версий между Kotlin и Kotlinx.serialization, так как они относительно тесно связаны. В моем случае я использовал Kotlin 1.3.71 и kotlinx.serialization 0.14.0, поэтому решение было обновить kotlinx.serialization до 0.20.0.

...