From c37576fda7453321e35b409cbb0993bc92a746f4 Mon Sep 17 00:00:00 2001 From: Karlatemp <karlatemp@vip.qq.com> Date: Sat, 30 Apr 2022 12:49:28 +0800 Subject: [PATCH] Log exception when failed to initialize `java.desktop` for better user debugging; Use CLI if in headless mode --- mirai-core-api/src/jvmMain/kotlin/utils/SwingSolver.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mirai-core-api/src/jvmMain/kotlin/utils/SwingSolver.kt b/mirai-core-api/src/jvmMain/kotlin/utils/SwingSolver.kt index 28d7d17f2..b93ec1364 100644 --- a/mirai-core-api/src/jvmMain/kotlin/utils/SwingSolver.kt +++ b/mirai-core-api/src/jvmMain/kotlin/utils/SwingSolver.kt @@ -141,6 +141,9 @@ internal object WindowHelperJvm { } if (System.getProperty("mirai.no-desktop") != null) return@run PlatformKind.CLI kotlin.runCatching { + Class.forName("java.awt.GraphicsEnvironment") + if (GraphicsEnvironment.isHeadless()) return@run PlatformKind.CLI + Class.forName("java.awt.Desktop") Class.forName("java.awt.Toolkit") Toolkit.getDefaultToolkit() @@ -160,6 +163,9 @@ internal object WindowHelperJvm { } else { return@run PlatformKind.CLI } + }.onFailure { error -> + if (error.javaClass == ClassNotFoundException::class.java && error.cause == null) return@onFailure + logger.warning("Failed to initialize module `java.desktop`", error) }.getOrElse { return@run PlatformKind.CLI }