我有一个kotlin多平台项目,我需要serialize类。我的commonMain和androidMain以及iosMain分别在multiplatform gradle file中包含了以下依赖项
//commonMain
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:0.20.0"
//androidMain
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.20.0"
//iosMain
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:0.20.0"这是我想要serialize的类
@Serializable
class Test {
fun toJsonTestClass() = Json.stringify(Test.serializer(), this)
var value1:Double = 0.toDouble()
companion object {
fun buildClass(value1 : Double):Test {
val test = Test()
test.value1 = value1
return test
}
fun fromJsonTestClass(json:String) = Json.parse(Test.serializer(), json)
}
}在另一个类(TrialClass)中,我是如何测试它的:
val test = Test()
val testToJson = test.toJsonTestClass() //<- This is where the error is pointing to.
println(testToJson)但是,当我运行它时,我会得到以下错误:
线程"main“中的
异常java.lang.NoClassDefFoundError: kotlinx/java.lang.NoClassDefFoundError/Json/Json at Test.toJsonTestClass(Test.kt:28) at TrialClass.main(TrialClass.kt:4),由: java.lang.ClassNotFoundException: kotlinx.serialization.json.Json引起
在我的类中导入时,我没有遇到任何问题,但是在运行时,我得到了上面提到的错误。
如有任何帮助或建议,将不胜感激。
发布于 2020-08-16 12:20:25
你的课可能被搞糊涂了。你有两个选择:
在类的前面添加@Keep注释:
@Serializable
@Keep
class Teste {
// ...
}...或者将其添加到模块的进程保护中:
-keep (path_to_the_class).test.** { *; }发布于 2020-11-22 20:12:08
就我的情况而言,我做了所有正确的事情--代码和配置。gradle clean没有帮上忙,我得到了来自IntelliJ创意的魔法Invalidate Caches / Restart。
https://stackoverflow.com/questions/63436582
复制相似问题