From d7b253186e4c613043afaffc8a648f7ae00352fd Mon Sep 17 00:00:00 2001 From: LamGC Date: Mon, 21 Feb 2022 11:52:25 +0800 Subject: [PATCH] =?UTF-8?q?fix(extension):=20=E5=9C=A8=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E6=89=A9=E5=B1=95=E5=AF=B9=E8=B1=A1=E6=97=B6=E6=8D=95=E8=8E=B7?= =?UTF-8?q?=E5=BC=82=E5=B8=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 为防止 Factory 抛出异常影响加载, 增强鲁棒性, 所以在创建实例时捕获异常, 并跳过抛出异常的 Factory. 目前还不能解决 Factory 初始化异常的问题, 等 MavenRepositoryFinder 更新后再修复. --- scalabot-app/src/main/kotlin/ExtensionComponents.kt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/scalabot-app/src/main/kotlin/ExtensionComponents.kt b/scalabot-app/src/main/kotlin/ExtensionComponents.kt index a86c9e8..73e324a 100644 --- a/scalabot-app/src/main/kotlin/ExtensionComponents.kt +++ b/scalabot-app/src/main/kotlin/ExtensionComponents.kt @@ -88,9 +88,13 @@ internal class ExtensionLoader( ExtensionClassLoaderCleaner.getOrCreateExtensionClassLoader(extensionArtifact, extensionFile) val factories = mutableSetOf() for (factory in extClassLoader.serviceLoader) { - val extension = - factory.createExtensionInstance(bot, getExtensionDataFolder(extensionArtifact)) - factories.add(LoadedExtensionEntry(extensionArtifact, factory::class.java, extension)) + try { + val extension = + factory.createExtensionInstance(bot, getExtensionDataFolder(extensionArtifact)) + factories.add(LoadedExtensionEntry(extensionArtifact, factory::class.java, extension)) + } catch (e: Exception) { + log.error(e) { "创建扩展时发生异常. (ExtArtifact: `$extensionArtifact`, Factory: ${factory::class.java.name})" } + } } return factories.toSet() }