public class

ClassLoaderUtils

extends Object
java.lang.Object
   ↳ com.atlassian.core.util.ClassLoaderUtils

Class Overview

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!

Summary

Public Constructors
ClassLoaderUtils()
Public Methods
static ResourceBundle getBundle(String resourceName, Locale locale, Class callingClass)
getBundle() version of getResource() (that checks against the same list of class loaders)
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 Enumeration getResources(String resourceName, Class callingClass)
returns all found resources as java.net.URLs.
static Class loadClass(String className, ClassLoader callingClassLoader)
Load a class with a given name.
static Class loadClass(String className, Class callingClass)
Load a class with a given name.
static void printClassLoader(ClassLoader cl)
Prints the classloader hierarchy from a given classloader - useful for debugging.
static void printClassLoader()
Prints the current classloader hierarchy - useful for debugging.
[Expand]
Inherited Methods
From class java.lang.Object

Public Constructors

public ClassLoaderUtils ()

Public Methods

public static ResourceBundle getBundle (String resourceName, Locale locale, Class callingClass)

getBundle() version of getResource() (that checks against the same list of class loaders)

public static URL getResource (String resourceName, Class callingClass)

Load a given resource.

This method will try to load the resource using the following methods (in order):

Parameters
resourceName The name of the resource to load
callingClass The Class object of the calling object

public static InputStream getResourceAsStream (String resourceName, Class callingClass)

This is a convenience method to load a resource as a stream. The algorithm used to find the resource is given in getResource()

Parameters
resourceName The name of the resource to load
callingClass The Class object of the calling object

public static Enumeration getResources (String resourceName, Class callingClass)

returns all found resources as java.net.URLs.

This method will try to load the resource using the following methods (in order):

Parameters
resourceName The name of the resource to load
callingClass The Class object of the calling object
Throws
IOException

public static Class loadClass (String className, ClassLoader callingClassLoader)

Load a class with a given name.

It will try to load the class in the following order:

Parameters
className The name of the class to load
callingClassLoader The ClassLoader the calling object which will be used to look up className
Throws
ClassNotFoundException If the class cannot be found anywhere.

public static Class loadClass (String className, Class callingClass)

Load a class with a given name.

It will try to load the class in the following order:

Parameters
className The name of the class to load
callingClass The Class object of the calling object
Throws
ClassNotFoundException If the class cannot be found anywhere.

public static void printClassLoader (ClassLoader cl)

Prints the classloader hierarchy from a given classloader - useful for debugging.

public static void printClassLoader ()

Prints the current classloader hierarchy - useful for debugging.