Class Loader


  • public class Loader
    extends java.lang.Object
    Load resources (or images) from various sources.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static boolean ignoreTCL  
      (package private) static java.lang.String TSTR  
    • Constructor Summary

      Constructors 
      Constructor Description
      Loader()  
    • Method Summary

      All Methods Static Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      static java.net.URL getResource​(java.lang.String resource)
      This method will search for resource in different places.
      static java.net.URL getResource​(java.lang.String resource, java.lang.Class clazz)
      Deprecated.
      as of 1.2.
      private static java.lang.ClassLoader getTCL()
      Get the Thread Context Loader which is a JDK 1.2 feature.
      private static java.net.URL innerGetResource​(java.lang.String resource, java.lang.ClassLoader classLoader)  
      static boolean isJava1()
      Deprecated.
      with no replacement
      static java.lang.Class loadClass​(java.lang.String clazz)
      Load the specified class using the method.
      • Methods inherited from class java.lang.Object

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

      • ignoreTCL

        private static boolean ignoreTCL
    • Constructor Detail

      • Loader

        public Loader()
    • Method Detail

      • getResource

        public static java.net.URL getResource​(java.lang.String resource,
                                               java.lang.Class clazz)
        Deprecated.
        as of 1.2.
        Get a resource by delegating to getResource(String).
        Parameters:
        resource - resource name
        clazz - class, ignored.
        Returns:
        URL to resource or null.
      • getResource

        public static java.net.URL getResource​(java.lang.String resource)
        This method will search for resource in different places. The search order is as follows:
        1. Search for resource using the thread context class loader, unless "log4j.ignoreTCL" system property was set to true.

        2. Search for resource using the class loader that loaded this class (Loader).

        3. Try one last time with ClassLoader.getSystemResource(resource), that is using the system class loader.

        Nota bene: In versions of reload4j 1.2.23 and earlier, the javadoc documentation stated that the thread context class loader was used but when running under JDK 9 and later this was not actually the case. As of version 1.2.25, the javadoc corresponds to the original intention as documented.

        Parameters:
        resource - the resource to load
      • innerGetResource

        private static java.net.URL innerGetResource​(java.lang.String resource,
                                                     java.lang.ClassLoader classLoader)
      • isJava1

        @Deprecated
        public static boolean isJava1()
        Deprecated.
        with no replacement
        Are we running under JDK 1.x?
      • getTCL

        private static java.lang.ClassLoader getTCL()
                                             throws java.lang.IllegalAccessException,
                                                    java.lang.reflect.InvocationTargetException
        Get the Thread Context Loader which is a JDK 1.2 feature. If we are running under JDK 1.1 or anything else goes wrong the method returns null.
        Throws:
        java.lang.IllegalAccessException
        java.lang.reflect.InvocationTargetException
      • loadClass

        public static java.lang.Class loadClass​(java.lang.String clazz)
                                         throws java.lang.ClassNotFoundException
        Load the specified class using the method.

        Nota bene: In versions of reload4j 1.2.23 and earlier, the documentation stated that the thread context class loader was used to load the specified class. However, when running under JDK 9 and later this was not actually the case. Version 1.2.5 fixes this discrepancy.

        Parameters:
        clazz - the name of class to load
        Throws:
        java.lang.ClassNotFoundException