public class ClassLoaderUtil extends Object
This class is extremely useful for loading resources and classes in a fault tolerant manner that works across different applications servers.
It has come out of many months of frustrating use of multiple application servers at Atlassian, please don't change things unless you're sure they're not going to break in one server or another!
Constructor and Description |
---|
ClassLoaderUtil() |
Modifier and Type | Method and Description |
---|---|
static URL |
getResource(String resourceName,
Class callingClass)
Load a given resource.
|
static InputStream |
getResourceAsStream(String resourceName,
Class callingClass)
This is a convenience method to load a resource as a stream.
|
static Iterator<URL> |
getResources(String resourceName,
Class callingClass,
boolean aggregate)
Load all resources with a given name, potentially aggregating all results
from the searched classloaders.
|
static Class |
loadClass(String className,
Class callingClass)
Load a class with a given name.
|
static void |
printClassLoader()
Prints the current classloader hierarchy - useful for debugging.
|
static void |
printClassLoader(ClassLoader cl)
Prints the classloader hierarchy from a given classloader - useful for debugging.
|
public static Iterator<URL> getResources(String resourceName, Class callingClass, boolean aggregate) throws IOException
Load all resources with a given name, potentially aggregating all results from the searched classloaders. If no results are found, the resource name is prepended by '/' and tried again.
This method will try to load the resources using the following methods (in order):
resourceName
- The name of the resources to loadcallingClass
- The Class object of the calling objectaggregate
- aggregateIOException
- in case of IO errorspublic static URL getResource(String resourceName, Class callingClass)
This method will try to load the resource using the following methods (in order):
resourceName
- The name of the resource to loadcallingClass
- The Class object of the calling objectpublic static InputStream getResourceAsStream(String resourceName, Class callingClass)
resourceName
- The name of the resource to loadcallingClass
- The Class object of the calling objectpublic static Class loadClass(String className, Class callingClass) throws ClassNotFoundException
Load a class with a given name.
It will try to load the class in the following order:
Thread.currentThread().getContextClassLoader()
Class.forName(java.lang.String)
ClassLoaderUtil.class.getClassLoader()
callingClass.getClassLoader()
className
- The name of the class to loadcallingClass
- The Class object of the calling objectClassNotFoundException
- If the class cannot be found anywhere.public static void printClassLoader()
public static void printClassLoader(ClassLoader cl)
cl
- the class loaderCopyright © 2000–2020 Apache Software Foundation. All rights reserved.