VitalClassLoader

abstract class VitalClassLoader<T : Any>(classLoaderName: String, val plugin: T, urls: Array<URL>, parent: ClassLoader?) : URLClassLoader

The main internal class loader responsible for loading the custom nested-jar structure of the final plugin jar file. Will load classes and resources from its own classpath first, before delegating to its parent class loader (plugin).

Exposes a way to configure parent-first packages via vital.properties.

Parent-first packages are needed when multiple class definitions are found on the plugin classpath and nested-jars (dependencies) and type definitions are conflicting between classloaders.

Parameters

classLoaderName

configures which parent-first packages are loaded from vital.properties, e.g., classLoaderName = "spigot" -> will load the key "vital.classloader.spigot.parent-first-packages" in vital.properties

Inheritors

Constructors

Link copied to clipboard
constructor(classLoaderName: String, plugin: T, urls: Array<URL>, parent: ClassLoader?)

Types

Link copied to clipboard
class Bungee(plugin: Plugin) : VitalClassLoader<Plugin>
Link copied to clipboard
class Paper(plugin: JavaPlugin) : VitalClassLoader<JavaPlugin> , ConfiguredPluginClassLoader
Link copied to clipboard
class Spigot(plugin: JavaPlugin) : VitalClassLoader<JavaPlugin>

Properties

Link copied to clipboard
Link copied to clipboard
open val name: String?
Link copied to clipboard
Link copied to clipboard
val plugin: T
Link copied to clipboard
Link copied to clipboard
open val urLs: Array<out URL?>?

Functions

Link copied to clipboard
open override fun addURL(url: URL?)

exposes a way to manually add urls to the url path of this class loader (delegates to URLClassLoader.addURL)

Link copied to clipboard
Link copied to clipboard
open fun close()
Link copied to clipboard
open fun findResource(name: String?): URL?
Link copied to clipboard
open fun findResources(name: String?): Enumeration<URL?>?
Link copied to clipboard
Link copied to clipboard
open override fun getResource(name: String): URL?
Link copied to clipboard
Link copied to clipboard
open override fun getResources(name: String): Enumeration<URL>
Link copied to clipboard
open fun loadClass(name: String?): Class<*>?
Link copied to clipboard
open fun resources(name: String?): Stream<URL?>?
Link copied to clipboard
open fun setClassAssertionStatus(className: String?, enabled: Boolean)
Link copied to clipboard
Link copied to clipboard
open fun setPackageAssertionStatus(packageName: String?, enabled: Boolean)