Package jenkins.util
Class URLClassLoader2
java.lang.Object
java.lang.ClassLoader
java.security.SecureClassLoader
java.net.URLClassLoader
jenkins.util.URLClassLoader2
- All Implemented Interfaces:
Closeable,AutoCloseable,JenkinsClassLoader
- Direct Known Subclasses:
PluginFirstClassLoader2
@Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class)
public class URLClassLoader2
extends URLClassLoader
implements JenkinsClassLoader
URLClassLoader with loosened visibility for use with ClassLoaderReflectionToolkit.-
Constructor Summary
ConstructorsConstructorDescriptionURLClassLoader2(String name, URL[] urls) Create a newURLClassLoader2with the given name and URLS and theClassLoader.getSystemClassLoader()as its parent.URLClassLoader2(String name, URL[] urls, ClassLoader parent) Create a newURLClassLoader2with the given name, URLS parent.URLClassLoader2(URL[] urls) Deprecated.URLClassLoader2(URL[] urls, ClassLoader parent) Deprecated. -
Method Summary
Modifier and TypeMethodDescriptionvoidClass<?> Public version ofClassLoader.findClass(String)Class<?> findLoadedClass2(String name) Public version ofClassLoader.findLoadedClass(String)getClassLoadingLock(String className) Replace the JDK's per-name lock map with a GC-collectable lock object.Methods inherited from class java.net.URLClassLoader
close, definePackage, findResource, findResources, getPermissions, getResourceAsStream, getURLs, newInstance, newInstanceMethods inherited from class java.security.SecureClassLoader
defineClass, defineClassMethods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findSystemClass, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSignersMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface jenkins.util.JenkinsClassLoader
findResource, findResources
-
Constructor Details
-
URLClassLoader2
Deprecated. -
URLClassLoader2
Deprecated. -
URLClassLoader2
Create a newURLClassLoader2with the given name and URLS and theClassLoader.getSystemClassLoader()as its parent.- Parameters:
name- name of this classloader.urls- the list of URLS to find classes in.- Since:
- 2.459
-
URLClassLoader2
Create a newURLClassLoader2with the given name, URLS parent.- Parameters:
name- name of this classloader.urls- the list of URLS to find classes in.parent- the parent to search for classes before we look in theurls- Since:
- 2.459
-
-
Method Details
-
addURL
- Overrides:
addURLin classURLClassLoader
-
findClass
Description copied from interface:JenkinsClassLoaderPublic version ofClassLoader.findClass(String)- Specified by:
findClassin interfaceJenkinsClassLoader- Overrides:
findClassin classURLClassLoader- Throws:
ClassNotFoundException
-
findLoadedClass2
Description copied from interface:JenkinsClassLoaderPublic version ofClassLoader.findLoadedClass(String)- Specified by:
findLoadedClass2in interfaceJenkinsClassLoader
-
getClassLoadingLock
Replace the JDK's per-name lock map with a GC-collectable lock object. This is a workaround for JDK-8005233. When JDK-8005233 is resolved, this should be deleted. See also the discussion in this OpenJDK thread.Parallel-capable
ClassLoaderimplementations keep a distinct lock object per class name indefinitely, which can retain huge maps when there are many misses. Returning an internedStringkeyed by this loader and the class name preserves mutual exclusion for a given (loader, name) pair but allows the JVM to reclaim the lock when no longer referenced. Interned Strings are heap objects and GC-eligible on modern JDKs (7+).- Specified by:
getClassLoadingLockin interfaceJenkinsClassLoader- Overrides:
getClassLoadingLockin classClassLoader- Parameters:
className- the binary name of the class being loaded (must not be null)- Returns:
- a lock object unique to this classloader/class pair
-
URLClassLoader2(String, URL[])