From 9a8b69613204cb8ac2d7a6a988fd95fae5e89518 Mon Sep 17 00:00:00 2001
From: Karlatemp <kar@kasukusakura.com>
Date: Mon, 25 Jul 2022 01:47:24 +0800
Subject: [PATCH] [Console] Track plugin file path into error stack;
 iTXTech/mirai-console-loader#128

---
 .../src/internal/plugin/JvmPluginClassLoader.kt     | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/mirai-console/backend/mirai-console/src/internal/plugin/JvmPluginClassLoader.kt b/mirai-console/backend/mirai-console/src/internal/plugin/JvmPluginClassLoader.kt
index bc40dc9fd..b1d2ddc3d 100644
--- a/mirai-console/backend/mirai-console/src/internal/plugin/JvmPluginClassLoader.kt
+++ b/mirai-console/backend/mirai-console/src/internal/plugin/JvmPluginClassLoader.kt
@@ -207,7 +207,7 @@ internal class JvmPluginClassLoaderN : URLClassLoader {
         this.sharedLibrariesLogger = ctx.sharedLibrariesLoader
         this.file = file
         this.ctx = ctx
-        init0()
+        init1()
     }
 
     @Suppress("Since15")
@@ -218,7 +218,16 @@ internal class JvmPluginClassLoaderN : URLClassLoader {
         this.sharedLibrariesLogger = ctx.sharedLibrariesLoader
         this.file = file
         this.ctx = ctx
-        init0()
+        init1()
+    }
+
+    private fun init1() {
+        try {
+            init0()
+        } catch (e: Throwable) {
+            e.addSuppressed(RuntimeException("Failed to initialize new JvmPluginClassLoader, file=$file"))
+            throw e
+        }
     }
 
     private fun init0() {