Package com.opensymphony.module.sitemesh.util

# Class ClassLoaderUtil

java.lang.Object
com.opensymphony.module.sitemesh.util.ClassLoaderUtil

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 Summary

Constructors
Constructor
Description
`ClassLoaderUtil()`

## Method Summary

Modifier and Type
Method
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 Class`
`loadClass(String className, Class callingClass)`
Load a class with a given name.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### ClassLoaderUtil

public ClassLoaderUtil()

## Method Details

### getResource

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):

- From Thread.currentThread().getContextClassLoader()
- From ClassLoaderUtil.class.getClassLoader()
- callingClass.getClassLoader()

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

### getResourceAsStream

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

### loadClass

public 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:

- From Thread.currentThread().getContextClassLoader()
- Using the basic Class.forName()
- From ClassLoaderUtil.class.getClassLoader()
- From the callingClass.getClassLoader()

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.