yyuueexxiinngg / onebot-kotlin

OneBot标准的Kotlin实现及mirai插件 - 原cqhttp-mirai
GNU Affero General Public License v3.0
584 stars 139 forks source link

[BUG] 与 mirai-api-http 不兼容 #166

Open UlyssesZh opened 1 year ago

UlyssesZh commented 1 year ago

本插件中有 net.mamoe.yamlkt.YamlElement 这个类, 导致与 mirai-api-http 发生类名冲突. 这会导致 mirai-api-http 无法正确读取它的配置文件. 控制台中的相关错误:

2022-10-31 08:44:59 W/net.mamoe.mirai-api-http: Linked class net.mamoe.yamlkt.YamlElement in onebot-mirai-0.3.4-all.jar but plugin not depend on it.                                          
2022-10-31 08:44:59 W/net.mamoe.mirai-api-http: Class loading logic may change in feature.                                                                                                    
2022-10-31 08:44:59 E/net.mamoe.mirai-api-http: net.mamoe.yamlkt.YamlDecodingException: Top-level decoder: deserializing nested class for 'adapterSettings' in 'setting'                      
...ttings: {'http': {'port': 8086}}                                                                                                                                                           
                                  ^ at line 9, column 42                                                                                                                                      

net.mamoe.yamlkt.YamlDecodingException: Top-level decoder: deserializing nested class for 'adapterSettings' in 'setting'                                                                      
...ttings: {'http': {'port': 8086}}                                                                                                                                                           
                                  ^ at line 9, column 42                                                                                                                                      

        at net.mamoe.yamlkt.internal.YamlUtils__ContextualExceptionKt.contextualDecodingException(ContextualException.kt:154)                                                                 
        at net.mamoe.yamlkt.internal.YamlUtils.contextualDecodingException(Unknown Source)                                                                                                    
        at net.mamoe.yamlkt.internal.YamlDecoder$AbstractDecoder.decodeSerializableElement(YamlDecoder.kt:181)                                                                                
        at kotlinx.serialization.encoding.CompositeDecoder$DefaultImpls.decodeSerializableElement$default(Decoding.kt:537)                                                                    
        at net.mamoe.mirai.console.internal.data.PluginDataImpl$updaterSerializer$1.deserialize(PluginDataImpl.kt:85)                                                                         
        at net.mamoe.mirai.console.internal.data.PluginDataImpl$updaterSerializer$1.deserialize(PluginDataImpl.kt:47)                                                                         
        at net.mamoe.yamlkt.Yaml.decodeFromString(Yaml.kt:162)                                                                                                                                
        at net.mamoe.mirai.console.internal.data.MultiFilePluginDataStorageImpl.load(MultiFilePluginDataStorageImpl.kt:45)                                                                    
        at net.mamoe.mirai.console.plugin.jvm.AbstractJvmPlugin.reloadPluginConfig(AbstractJvmPlugin.kt:59)                                                                                   
        at mirai-api-http-2.6.2.mirai2.jar//net.mamoe.mirai.api.http.HttpApiPluginBase.onEnable(HttpApiPluginBase.kt:34)                                                                      
        at net.mamoe.mirai.console.internal.plugin.JvmPluginInternal.internalOnEnable$mirai_console(JvmPluginInternal.kt:131)                                                                 
        at net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl.enable(BuiltInJvmPluginLoaderImpl.kt:279)
        at net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl.enable(BuiltInJvmPluginLoaderImpl.kt:35)
        at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.enable(JvmPluginLoader.kt)
        at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.enable(JvmPluginLoader.kt:50)
        at net.mamoe.mirai.console.plugin.PluginManager.enablePlugin(PluginManager.kt:173)
        at net.mamoe.mirai.console.internal.plugin.PluginManagerImpl.enableAllLoadedPlugins$mirai_console(PluginManagerImpl.kt:175)
        at net.mamoe.mirai.console.internal.MiraiConsoleImplementationBridge.doStart$mirai_console(MiraiConsoleImplementationBridge.kt:336)
        at net.mamoe.mirai.console.MiraiConsoleImplementation$Companion.start(MiraiConsoleImplementation.kt:508)
        at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon(MiraiConsoleTerminalLoader.kt:177)
        at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon$default(MiraiConsoleTerminalLoader.kt:176)
        at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.main(MiraiConsoleTerminalLoader.kt:54)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
        at java.base/java.lang.reflect.Method.invoke(Method.java:578)
        at org.itxtech.mcl.Utility.bootJars(Utility.java:86)
        at org.itxtech.mcl.Utility.bootJars(Utility.java:76)
        at org.itxtech.mcl.Utility.bootMirai(Utility.java:98)
        at org.itxtech.mcl.module.builtin.Boot.boot(Boot.java:113)
        at org.itxtech.mcl.module.ModuleManager.phaseBoot(ModuleManager.java:123)
        at org.itxtech.mcl.Loader.lambda$start$4(Loader.java:194)
        at org.itxtech.mcl.Loader.tryCatching(Loader.java:151)
        at org.itxtech.mcl.Loader.start(Loader.java:194)
        at org.itxtech.mcl.Loader.main(Loader.java:84)
Caused by: net.mamoe.yamlkt.YamlDecodingException: Top-level decoder: deserializing nested class for '1' in 'kotlin.collections.LinkedHashMap'
adapterSettings: {'http': {'port': 8086}}
                          ^ at line 9, column 28

        at net.mamoe.yamlkt.internal.YamlUtils__ContextualExceptionKt.contextualDecodingException(ContextualException.kt:154)
        at net.mamoe.yamlkt.internal.YamlUtils.contextualDecodingException(Unknown Source)
        at net.mamoe.yamlkt.internal.YamlDecoder$AbstractDecoder.decodeSerializableElement(YamlDecoder.kt:181)
        at kotlinx.serialization.encoding.CompositeDecoder$DefaultImpls.decodeSerializableElement$default(Decoding.kt:537)
        at kotlinx.serialization.internal.MapLikeSerializer.readElement(CollectionSerializers.kt:111)
        at kotlinx.serialization.internal.MapLikeSerializer.readElement(CollectionSerializers.kt:84)
        at kotlinx.serialization.internal.AbstractCollectionSerializer.readElement$default(CollectionSerializers.kt:51)
        at kotlinx.serialization.internal.AbstractCollectionSerializer.merge(CollectionSerializers.kt:36)
        at kotlinx.serialization.internal.AbstractCollectionSerializer.deserialize(CollectionSerializers.kt:43)
        at net.mamoe.mirai.console.data.SerializableValue$Companion$serializableValueWith$$inlined$map$1.deserialize(serializerHelper.kt:170)
        at net.mamoe.yamlkt.internal.YamlDecoder$AbstractDecoder.decodeSerializableElement(YamlDecoder.kt:179)
        ... 30 more                            
Caused by: java.lang.ClassCastException: class net.mamoe.yamlkt.internal.YamlDecoder$FlowMapDecoder cannot be cast to class net.mamoe.yamlkt.internal.YamlDecoder$AbstractDecoder (net.mamoe.y
amlkt.internal.YamlDecoder$FlowMapDecoder is in unnamed module of loader 'app'; net.mamoe.yamlkt.internal.YamlDecoder$AbstractDecoder is in unnamed module of loader 'onebot-mirai-0.3.4-all.j
ar' @4fa4f485)                                 
        at onebot-mirai-0.3.4-all.jar//net.mamoe.yamlkt.internal.YamlElementSerializer.deserialize(YamlElementSerializer.kt:35)
        at onebot-mirai-0.3.4-all.jar//net.mamoe.yamlkt.internal.YamlElementSerializer.deserialize(YamlElementSerializer.kt:30)
        at net.mamoe.yamlkt.internal.YamlDecoder$AbstractDecoder.decodeSerializableElement(YamlDecoder.kt:179)
        ... 38 more                            

版本信息: