Fix DependencyLoader if ClassLoader is a AppClassLoader

This commit is contained in:
ceze88 2024-02-20 11:44:59 +01:00
parent b2e842c805
commit 8289dae0f8

View File

@ -32,12 +32,22 @@ public class DependencyLoader {
private final ClassLoaderAccess parentClassLoaderAccess; private final ClassLoaderAccess parentClassLoaderAccess;
public DependencyLoader(Plugin plugin) { public DependencyLoader(Plugin plugin) {
//Bind loaded dependencies to the plugin's parent class loader so classes could be accessed across plugins //Bind loaded dependencies to the plugin's parent class loader so classes could be accessed across plugins
URLClassLoader parentClassLoader = (URLClassLoader) plugin.getClass().getClassLoader().getParent(); ClassLoader parentClassLoader = plugin.getClass().getClassLoader().getParent();
this.libraryLoader = new LibraryLoader( if (parentClassLoader instanceof URLClassLoader) {
parentClassLoader, this.libraryLoader = new LibraryLoader(
new File(plugin.getDataFolder().getParentFile(), CraftaroCoreConstants.getProjectName() + "/dependencies/v" + DEPENDENCY_VERSION), (URLClassLoader) parentClassLoader,
SongodaCore.getLogger() new File(plugin.getDataFolder().getParentFile(), CraftaroCoreConstants.getProjectName() + "/dependencies/v" + DEPENDENCY_VERSION),
); SongodaCore.getLogger()
);
} else {
//We have AppClassLoader here
this.libraryLoader = new LibraryLoader(
parentClassLoader,
new File(plugin.getDataFolder().getParentFile(), CraftaroCoreConstants.getProjectName() + "/dependencies/v" + DEPENDENCY_VERSION),
SongodaCore.getLogger()
);
}
this.parentClassLoaderAccess = new ClassLoaderAccess(parentClassLoader); this.parentClassLoaderAccess = new ClassLoaderAccess(parentClassLoader);
} }