Fix loadClass

This commit is contained in:
Him188 2020-03-05 08:20:04 +08:00
parent 0dbbbbb51d
commit b6fb0f06ef
2 changed files with 17 additions and 7 deletions

View File

@ -12,6 +12,7 @@ package net.mamoe.mirai.console
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.Channel
import net.mamoe.mirai.Bot
import net.mamoe.mirai.BotFactory
import net.mamoe.mirai.console.MiraiConsole.CommandProcessor.processNextCommandLine
import net.mamoe.mirai.console.command.CommandManager
import net.mamoe.mirai.console.command.CommandSender
@ -19,11 +20,8 @@ import net.mamoe.mirai.console.command.ConsoleCommandSender
import net.mamoe.mirai.console.command.DefaultCommands
import net.mamoe.mirai.console.core.MiraiCoreLoader
import net.mamoe.mirai.console.plugins.PluginManager
import net.mamoe.mirai.console.plugins.loadAsConfig
import net.mamoe.mirai.console.plugins.withDefaultWrite
import net.mamoe.mirai.console.utils.MiraiConsoleUI
import net.mamoe.mirai.utils.cryptor.ECDH
import java.io.File
object MiraiConsole {
@ -93,6 +91,7 @@ object MiraiConsole {
MiraiCoreLoader()
println(BotFactory::class)
/* 加载ECDH */
try {
ECDH()

View File

@ -207,16 +207,27 @@ object MiraiCoreLoader {
private fun loadCoreAndLib() {
try {
MiraiConsole.logger("Core: " + getCore())
MiraiConsole.logger("Protocol: " + getProtocolLib())
val coreFile = getCore()!!
val protocolFile = getProtocolLib()!!
MiraiConsole.logger("Core: $coreFile")
MiraiConsole.logger("Protocol: $protocolFile")
val classloader = URLClassLoader(
arrayOf(getCore()!!.toURI().toURL(), getProtocolLib()!!.toURI().toURL()),
Thread.currentThread().contextClassLoader
arrayOf(coreFile.toURI().toURL(), protocolFile.toURI().toURL()),
this.javaClass.classLoader
)
ClassLoader.getSystemClassLoader()
// this.javaClass.classLoader.
println(classloader.loadClass("net.mamoe.mirai.BotFactory"))
println(classloader.loadClass("net.mamoe.mirai.qqandroid.QQAndroid"))
println(classloader.loadClass("net.mamoe.mirai.utils.cryptor.ECDHJvmKt"))
val a = classloader.loadClass("net.mamoe.mirai.qqandroid.QQAndroid").kotlin.objectInstance!!
println(a::class.java)
println(Class.forName("net.mamoe.mirai.qqandroid.QQAndroid"))
} catch (e: ClassNotFoundException) {
MiraiConsole.logger("Failed to load core, please seek for help")