From 1b98667365903a4529ccfa6ab8872cc1936e9608 Mon Sep 17 00:00:00 2001 From: Luck Date: Thu, 8 Mar 2018 18:36:41 +0000 Subject: [PATCH] Fix IsolatedClassLoader on Java 9 (#815) --- .../classloader/IsolatedClassLoader.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/me/lucko/luckperms/common/dependencies/classloader/IsolatedClassLoader.java b/common/src/main/java/me/lucko/luckperms/common/dependencies/classloader/IsolatedClassLoader.java index 4cd934e7a..2f3ebac3b 100644 --- a/common/src/main/java/me/lucko/luckperms/common/dependencies/classloader/IsolatedClassLoader.java +++ b/common/src/main/java/me/lucko/luckperms/common/dependencies/classloader/IsolatedClassLoader.java @@ -35,9 +35,20 @@ import java.net.URLClassLoader; * with other plugins, or libraries provided by the server implementation.

*/ public class IsolatedClassLoader extends URLClassLoader { + static { + ClassLoader.registerAsParallelCapable(); + } public IsolatedClassLoader(URL[] urls) { - super(urls, null); + /* + * ClassLoader#getSystemClassLoader returns the AppClassLoader + * + * Calling #getParent on this returns the ExtClassLoader (Java 8) or + * the PlatformClassLoader (Java 8). Since we want this classloader to + * be isolated from the Minecraft server (the app), we set the parent + * to be the platform class loader. + */ + super(urls, ClassLoader.getSystemClassLoader().getParent()); } }