Class ClassLoaderUtils


  • public final class ClassLoaderUtils
    extends java.lang.Object
    This class is extremely useful for loading resources and classes in a fault tolerant manner that works across different applications servers. Do not touch this unless you're a grizzled classloading guru veteran who is going to verify any change on 6 different application servers.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static org.slf4j.Logger LOG  
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private ClassLoaderUtils()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.net.URL getResource​(java.lang.String resourceName, java.lang.Class<?> callingClass)
      Load a given resource.
      static java.io.InputStream getResourceAsStream​(java.lang.String resourceName, java.lang.Class<?> callingClass)
      This is a convenience method to load a resource as a stream.
      static java.util.List<java.net.URL> getResources​(java.lang.String resourceName, java.lang.Class<?> callingClass)
      Load a given resources.
      static java.lang.Class<?> loadClass​(java.lang.String className, java.lang.Class<?> callingClass)
      Load a class with a given name.
      private static java.lang.Class<?> loadClass2​(java.lang.String className, java.lang.Class<?> callingClass)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • LOG

        private static final org.slf4j.Logger LOG
    • Constructor Detail

      • ClassLoaderUtils

        private ClassLoaderUtils()
    • Method Detail

      • getResource

        public static java.net.URL getResource​(java.lang.String resourceName,
                                               java.lang.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
      • getResources

        public static java.util.List<java.net.URL> getResources​(java.lang.String resourceName,
                                                                java.lang.Class<?> callingClass)
        Load a given resources.

        This method will try to load the resources 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 java.io.InputStream getResourceAsStream​(java.lang.String resourceName,
                                                              java.lang.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 java.lang.Class<?> loadClass​(java.lang.String className,
                                                   java.lang.Class<?> callingClass)
                                            throws java.lang.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:
        java.lang.ClassNotFoundException - If the class cannot be found anywhere.
      • loadClass2

        private static java.lang.Class<?> loadClass2​(java.lang.String className,
                                                     java.lang.Class<?> callingClass)
                                              throws java.lang.ClassNotFoundException
        Throws:
        java.lang.ClassNotFoundException