在插件中嵌入ktor失败?
-
如果正常在kotlin应用main函数中使用,可以正常运行。
但如果在mirai插件中使用,则会出现错误代码500。
如何解决?或者,有没有好的方法在插件中开启httpserver?override fun onEnable() { logger.info { "Plugin loaded" } Thread{ embeddedServer(Netty, port = 8081) { routing { get("/") { this@WebListener.logger.info("hello") call.respondText("success") } } }.start(wait = true) }.start() }
-
请确定打包的插件携带了 ktor-server-netty 等必要依赖,你可能需要 https://github.com/project-mirai/mirai-slf4j-bridge 来开启全部日志
-
@karlatemp 感谢指导!log已经顺利显示,这次看到了错误信息。
2021-10-16 22:16:12 E/ktor.application: Unhandled: GET - / java.lang.NoSuchMethodError: 'voidio.ktor.http.ParametersBuilder.<init>(int,io.ktor.http.UrlEncodingOption, int,kotlin.jvm.internal.DefaultConstructorMarker)'
似乎在被console加载的过程中没有顺利加载处理方法
-
看上去像版本冲突
-
尝试使用与 mirai-core-api 所使用的 ktor 版本一致的ktor版本
-
@karlatemp 解决了,真是神奇(^▽^) 谢谢!