调用生成的serializer()方法时收到NoClassDefFoundError

尝试在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)
f305504552 回答:调用生成的serializer()方法时收到NoClassDefFoundError

这是Kotlin和Kotlinx.serialization之间版本不匹配的结果,因为它们相对紧密地耦合在一起。在我的情况下,我使用的是Kotlin 1.3.71和kotlinx.serialization 0.14.0,因此解决方案是将kotlinx.serialization升级到0.20.0。

本文链接:https://www.f2er.com/2424730.html

大家都在问