[英]java.lang.VerifyError when writing Android tests with traits in Kotlin
[英]java.lang.VerifyError in ktor server POST in full stack tutorial
在官方 kotlin 教程https://kotlinlang.org/docs/multiplatform-full-stack-app.html
我有一個 ktor 服務器正在運行,當我執行 GET 時,我得到正確的 json 響應。 當我發布時:
POST http://localhost:9090/shoppingList
Content-Type: application/json
{
"desc": "Peppers 🌶",
"priority": 5
}
服務器返回 500 錯誤:
2023-01-10 08:53:06.605 [DefaultDispatcher-worker-1] INFO ktor.application - Responding at http://0.0.0.0:9090
2023-01-10 08:53:12.317 [eventLoopGroupProxy-4-2] ERROR ktor.application - Unhandled: POST - /shoppingList
java.lang.VerifyError: class kotlinx.serialization.json.internal.StreamingJsonDecoder overrides final method kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableElement(Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
at ...
這只是在 Kotlin 中構建完整堆棧 web 應用程序的教程的第一部分,所以我想完成教程,否則我會遺漏一些東西。
下面的服務器代碼,但這也是從教程中直接復制和粘貼並使用教程 git 回購
val shoppingList = mutableListOf(
ShoppingListItem("Cucumbers 🥒", 1),
ShoppingListItem("Tomatoes 🍅", 2),
ShoppingListItem("Orange Juice 🍊", 3)
)
fun main() {
embeddedServer(Netty, 9090) {
install(ContentNegotiation) {
json()
}
install(CORS) {
allowMethod(HttpMethod.Get)
allowMethod(HttpMethod.Post)
allowMethod(HttpMethod.Delete)
anyHost()
}
install(Compression) {
gzip()
}
routing {
route(ShoppingListItem.path) {
get {
call.respond(shoppingList)
}
post {
shoppingList += call.receive<ShoppingListItem>()
call.respond(HttpStatusCode.OK)
}
delete("/{id}") {
val id = call.parameters["id"]?.toInt() ?: error("Invalid delete request")
shoppingList.removeIf { it.id == id }
call.respond(HttpStatusCode.OK)
}
}
}
routing {
get("/hello") {
call.respondText("Hello, API!")
}
}
}.start(wait = true)
這是因為教程存儲庫的主分支已過時,需要根據此問題更新其依賴項: https://github.com/kotlin-hands-on/jvm-js-fullstack/issues/21
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.