From 662d77d3cd102e3a10bceb3c1fe5f822edf71a97 Mon Sep 17 00:00:00 2001 From: Walter Oggioni Date: Tue, 10 May 2022 14:22:06 +0800 Subject: [PATCH] added extension classloader to classloader's hierarchy --- .../src/main/java/net/woggioni/envelope/MainClassLoader.java | 4 ++-- .../main/java11/net/woggioni/envelope/MainClassLoader.java | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/launcher/src/main/java/net/woggioni/envelope/MainClassLoader.java b/launcher/src/main/java/net/woggioni/envelope/MainClassLoader.java index 3de1271..97e7ce9 100644 --- a/launcher/src/main/java/net/woggioni/envelope/MainClassLoader.java +++ b/launcher/src/main/java/net/woggioni/envelope/MainClassLoader.java @@ -3,11 +3,11 @@ package net.woggioni.envelope; import java.nio.file.Path; import lombok.SneakyThrows; - class MainClassLoader { @SneakyThrows static Class loadMainClass(Iterable roots, String mainModuleName, String mainClassName) { - ClassLoader pathClassLoader = new net.woggioni.xclassloader.PathClassLoader(roots); + ClassLoader pathClassLoader = new net.woggioni.xclassloader.PathClassLoader(roots, ClassLoader.getSystemClassLoader().getParent()); + Thread.currentThread().setContextClassLoader(pathClassLoader); return pathClassLoader.loadClass(mainClassName); } } diff --git a/launcher/src/main/java11/net/woggioni/envelope/MainClassLoader.java b/launcher/src/main/java11/net/woggioni/envelope/MainClassLoader.java index 4b8703b..5d99e50 100644 --- a/launcher/src/main/java11/net/woggioni/envelope/MainClassLoader.java +++ b/launcher/src/main/java11/net/woggioni/envelope/MainClassLoader.java @@ -21,7 +21,8 @@ class MainClassLoader { @SneakyThrows static Class loadMainClass(Iterable roots, String mainModuleName, String mainClassName) { if (mainModuleName == null) { - ClassLoader pathClassLoader = new net.woggioni.xclassloader.PathClassLoader(roots); + ClassLoader pathClassLoader = new net.woggioni.xclassloader.PathClassLoader(roots, ClassLoader.getSystemClassLoader().getParent()); + Thread.currentThread().setContextClassLoader(pathClassLoader); return pathClassLoader.loadClass(mainClassName); } else { ModuleLayer bootLayer = ModuleLayer.boot();