project-mirai / mirai-api-http

Mirai HTTP API (console) plugin
GNU Affero General Public License v3.0
1.65k stars 345 forks source link

2.5.0版本序列化bug #568

Closed Ai-Himmel closed 2 years ago

Ai-Himmel commented 2 years ago

大概是序列化的bug吧 触发方法: 通过http适配器向/sendFriendMessage,/sendGroupMessage,/sendNudge(就测了这三个)发送消息 缓解方法:降级到2.4.0

2022-05-08 20:44:18 E/Mah Debug: java.lang.NoSuchMethodError: 'void kotlinx.serialization.internal.ObjectSerializer.<init>(java.lang.String, java.lang.Object, java.lang.annotation.Annotation[])'
java.lang.NoSuchMethodError: 'void kotlinx.serialization.internal.ObjectSerializer.<init>(java.lang.String, java.lang.Object, java.lang.annotation.Annotation[])'
        at net.mamoe.mirai.api.http.adapter.internal.dto.MessageDTO$Companion$$cachedSerializer$delegate$1.invoke(message.kt:208)
        at net.mamoe.mirai.api.http.adapter.internal.dto.MessageDTO$Companion$$cachedSerializer$delegate$1.invoke(message.kt:208)
        at kotlin.SafePublicationLazyImpl.getValue(LazyJVM.kt:107)
        at net.mamoe.mirai.api.http.adapter.internal.dto.MessageDTO$Companion.serializer(message.kt:208)
        at net.mamoe.mirai.api.http.adapter.internal.dto.parameter.SendDTO$$serializer.deserialize(message.kt:17)
        at net.mamoe.mirai.api.http.adapter.internal.dto.parameter.SendDTO$$serializer.deserialize(message.kt:17)
        at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:63)
        at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:32)
        at kotlinx.serialization.json.Json.decodeFromString(Json.kt:100)
        at net.mamoe.mirai.api.http.adapter.internal.serializer.BuiltinJsonSerializer.decode(BuiltinJson.kt:76)
        at net.mamoe.mirai.api.http.adapter.http.router.MessageKt$messageRouter$1$invoke$$inlined$httpAuthedPost$1$1.invokeSuspend(dsl.kt:208)
        at net.mamoe.mirai.api.http.adapter.http.router.MessageKt$messageRouter$1$invoke$$inlined$httpAuthedPost$1$1.invoke(dsl.kt)
        at net.mamoe.mirai.api.http.adapter.http.router.MessageKt$messageRouter$1$invoke$$inlined$httpAuthedPost$1$1.invoke(dsl.kt)
        at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:248)
        at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:116)
        at io.ktor.util.pipeline.SuspendFunctionGun.execute(SuspendFunctionGun.kt:136)
        at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:78)
        at io.ktor.routing.Routing.executeResult(Routing.kt:155)
        at io.ktor.routing.Routing.interceptor(Routing.kt:39)
        at io.ktor.routing.Routing$Feature$install$1.invokeSuspend(Routing.kt:107)
        at io.ktor.routing.Routing$Feature$install$1.invoke(Routing.kt)
        at io.ktor.routing.Routing$Feature$install$1.invoke(Routing.kt)
        at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:248)
        at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:116)
        at net.mamoe.mirai.api.http.adapter.http.feature.auth.Authorization$install$1.invokeSuspend(Authorization.kt:41)
        at net.mamoe.mirai.api.http.adapter.http.feature.auth.Authorization$install$1.invoke(Authorization.kt)
        at net.mamoe.mirai.api.http.adapter.http.feature.auth.Authorization$install$1.invoke(Authorization.kt)
        at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:248)
        at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:116)
        at net.mamoe.mirai.api.http.adapter.http.feature.handler.HttpRouterAccessHandler.intercept(HttpRouterAccessHandler.kt:36)
        at net.mamoe.mirai.api.http.adapter.http.feature.handler.HttpRouterAccessHandler.access$intercept(HttpRouterAccessHandler.kt:25)
        at net.mamoe.mirai.api.http.adapter.http.feature.handler.HttpRouterAccessHandler$Feature$install$1.invokeSuspend(HttpRouterAccessHandler.kt:91)
        at net.mamoe.mirai.api.http.adapter.http.feature.handler.HttpRouterAccessHandler$Feature$install$1.invoke(HttpRouterAccessHandler.kt)
        at net.mamoe.mirai.api.http.adapter.http.feature.handler.HttpRouterAccessHandler$Feature$install$1.invoke(HttpRouterAccessHandler.kt)
        at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:248)
        at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:116)
        at io.ktor.util.pipeline.SuspendFunctionGun.execute(SuspendFunctionGun.kt:136)
        at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:78)
        at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$2.invokeSuspend(DefaultEnginePipeline.kt:127)
        at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$2.invoke(DefaultEnginePipeline.kt)
        at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$2.invoke(DefaultEnginePipeline.kt)
        at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:248)
        at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:116)
        at io.ktor.util.pipeline.SuspendFunctionGun.execute(SuspendFunctionGun.kt:136)
        at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:78)
        at io.ktor.server.cio.CIOApplicationEngine$handleRequest$2.invokeSuspend(CIOApplicationEngine.kt:196)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
ryoii commented 2 years ago

是否用了 2.11 的 mirai-core

Ai-Himmel commented 2 years ago

是否用了 2.11 的 mirai-core

是2.10.1

{
  "module_packages": [
    "mcl:org.itxtech.mcl.module.builtin"
  ],
  "mirai_repo": "https://repo.itxtech.org",
  "maven_repo": [
    "https://maven.aliyun.com/repository/public"
  ],
  "packages": {
    "net.mamoe:mirai-console": {
      "channel": "stable",
      "version": "2.10.1",
      "type": "libs",
      "versionLocked": false
    },
    "net.mamoe:mirai-console-terminal": {
      "channel": "stable",
      "version": "2.10.1",
      "type": "libs",
      "versionLocked": false
    },
    "net.mamoe:mirai-core-all": {
      "channel": "stable",
      "version": "2.10.1",
      "type": "libs",
      "versionLocked": false
    },
    "org.itxtech:mcl-addon": {
      "channel": "c2001",
      "version": "2.0.2",
      "type": "plugins",
      "versionLocked": false
    },
    "net.mamoe:mirai-api-http": {
      "channel": "stable-v2",
      "version": "2.4.0",
      "type": "plugins",
      "versionLocked": false
    }
  },
  "disabled_modules": [],
  "proxy": "",
  "log_level": 1,
  "modules_props": {}
}
supr3me commented 2 years ago

"module_packages": [ "mcl:org.itxtech.mcl.module.builtin" ], "mirai_repo": "https://repo.itxtech.org", "maven_repo": [ "https://maven.aliyun.com/repository/public" ], "packages": { "net.mamoe:mirai-console": { "channel": "stable", "version": "2.10.3", "type": "libs", "versionLocked": false }, "net.mamoe:mirai-console-terminal": { "channel": "stable", "version": "2.10.3", "type": "libs", "versionLocked": false }, "net.mamoe:mirai-core-all": { "channel": "stable", "version": "2.10.3", "type": "libs", "versionLocked": false }, "org.itxtech:mcl-addon": { "channel": "c2001", "version": "2.0.2", "type": "plugins", "versionLocked": false }, "net.mamoe:mirai-api-http": { "channel": "stable-v2", "version": "2.4.0", "type": "plugins", "versionLocked": false }, "net.mamoe:chat-command": { "channel": "stable", "version": "0.5.1", "type": "plugins", "versionLocked": false } }, "disabled_modules": [], "proxy": "", "log_level": 1, "modules_props": {} }

同样的问题 java.lang.NoSuchMethodError: 'void kotlinx.serialization.PolymorphicSerializer.(kotlin.reflect.KClass, java.lang.annotation.Annotation[])'

supr3me commented 2 years ago

改成2.4可以

ryoii commented 2 years ago

切换成 2.4 或者使用 2.11.0-RC 的 core