From 16ee5000543c1bb26436ddf2b1849b26067a6842 Mon Sep 17 00:00:00 2001 From: Luck Date: Fri, 19 Feb 2021 16:33:59 +0000 Subject: [PATCH] Fix NoClassDefFoundError when loading extensions on non-JiJ platforms --- .../common/extension/SimpleExtensionManager.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/common/src/main/java/me/lucko/luckperms/common/extension/SimpleExtensionManager.java b/common/src/main/java/me/lucko/luckperms/common/extension/SimpleExtensionManager.java index ded93d01a..05598d03a 100644 --- a/common/src/main/java/me/lucko/luckperms/common/extension/SimpleExtensionManager.java +++ b/common/src/main/java/me/lucko/luckperms/common/extension/SimpleExtensionManager.java @@ -27,7 +27,6 @@ package me.lucko.luckperms.common.extension; import com.google.gson.JsonObject; -import me.lucko.luckperms.common.loader.JarInJarClassLoader; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; import me.lucko.luckperms.common.util.gson.GsonProvider; @@ -144,7 +143,7 @@ public class SimpleExtensionManager implements ExtensionManager, AutoCloseable { throw new IllegalArgumentException("class is null"); } - if (useParentClassLoader && getClass().getClassLoader() instanceof JarInJarClassLoader) { + if (useParentClassLoader && isJarInJar()) { try { addJarToParentClasspath(path); } catch (Exception e) { @@ -196,6 +195,11 @@ public class SimpleExtensionManager implements ExtensionManager, AutoCloseable { return this.extensions.stream().map(e -> e.instance).collect(Collectors.toSet()); } + private static boolean isJarInJar() { + String thisClassLoaderName = SimpleExtensionManager.class.getClassLoader().getClass().getName(); + return thisClassLoaderName.equals("me.lucko.luckperms.common.loader.JarInJarClassLoader"); + } + private static void addJarToParentClasspath(Path path) throws Exception { ClassLoader parentClassLoader = SimpleExtensionManager.class.getClassLoader().getParent(); if (!(parentClassLoader instanceof URLClassLoader)) {