From 9c5bfb3bf5a8d362b39e7ea5172a0cde957a511a Mon Sep 17 00:00:00 2001
From: Him188 <Him188@mamoe.net>
Date: Sat, 25 Apr 2020 12:24:31 +0800
Subject: [PATCH] Fix #270

---
 .../kotlin/net/mamoe/mirai/utils/LoginSolver.jvm.kt    |  2 +-
 .../kotlin/net/mamoe/mirai/utils/WindowHelperJvm.kt    | 10 ++++++++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/LoginSolver.jvm.kt b/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/LoginSolver.jvm.kt
index 6df638cde..176447542 100644
--- a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/LoginSolver.jvm.kt
+++ b/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/LoginSolver.jvm.kt
@@ -40,7 +40,7 @@ class DefaultLoginSolver(
     private val delegate: LoginSolver
 
     init {
-        if (Desktop.isDesktopSupported()) {
+        if (WindowHelperJvm.isDesktopSupport) {
             delegate = SwingSolver
         } else {
             delegate = DefaultLoginSolverImpl(input, overrideLogger)
diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/WindowHelperJvm.kt b/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/WindowHelperJvm.kt
index de22d2b76..d45592bd4 100644
--- a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/WindowHelperJvm.kt
+++ b/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/WindowHelperJvm.kt
@@ -23,6 +23,16 @@ import java.awt.event.WindowEvent
 import javax.swing.JFrame
 import javax.swing.JTextField
 
+// 隔离类代码
+internal object WindowHelperJvm {
+    internal val isDesktopSupport: Boolean =
+        kotlin.runCatching {
+            Desktop.isDesktopSupported()
+        }.getOrElse {
+            false
+        }
+}
+
 internal class WindowInitialzier(private val initializer: WindowInitialzier.(JFrame) -> Unit) {
     private lateinit var frame0: JFrame
     val frame: JFrame get() = frame0