jodd.util
Class ClassLoaderUtil

java.lang.Object
  extended by jodd.util.ClassLoaderUtil

public class ClassLoaderUtil
extends java.lang.Object

Utilities to manipulate class path, define and find classes etc.


Field Summary
static char[] PRIMITIVE_BYTECODE_NAME
          List of primitive bytecode characters that matches names list.
static java.lang.String[] PRIMITIVE_TYPE_NAMES
          List of primitive type names.
static java.lang.Class[] PRIMITIVE_TYPES
          List of primitive types that matches names list.
 
Constructor Summary
ClassLoaderUtil()
           
 
Method Summary
static void addFileToClassPath(java.io.File path, java.lang.ClassLoader classLoader)
          Adds additional file or path to classpath during runtime.
static void addFileToClassPath(java.lang.String path, java.lang.ClassLoader classLoader)
          Adds additional file or path to classpath during runtime.
static void addUrlToClassPath(java.net.URL url, java.lang.ClassLoader classLoader)
          Adds the content pointed by the URL to the classpath during runtime.
static java.lang.Class defineClass(byte[] classData)
          Defines a class from byte array into the system class loader.
static java.lang.Class defineClass(byte[] classData, java.lang.ClassLoader classLoader)
          Defines a class from byte array into the specified class loader.
static java.lang.Class defineClass(java.lang.String className, byte[] classData)
          Defines a class from byte array into the system class loader.
static java.lang.Class defineClass(java.lang.String className, byte[] classData, java.lang.ClassLoader classLoader)
          Defines a class from byte array into the specified class loader.
static java.lang.Class findClass(java.lang.String className, java.io.File[] classPath)
           
static java.lang.Class findClass(java.lang.String className, java.net.URL[] classPath)
           
static java.lang.Class findClass(java.lang.String className, java.net.URL[] classPath, java.lang.ClassLoader parent)
          Finds and loads class on classpath even if it was already loaded.
static java.io.File findToolsJar()
          Finds tools.jar.
static java.io.InputStream getClassAsStream(java.lang.Class clazz)
          Opens a class of the specified name for reading using class classloader.
static java.io.InputStream getClassAsStream(java.lang.String className)
          Opens a class of the specified name for reading.
static java.lang.String getClassFileName(java.lang.Class clazz)
          Resolves class file name from class name by replacing dot's with '/' separator and adding class extension at the end.
static java.lang.String getClassFileName(java.lang.String className)
          Resolves class file name from class name by replacing dot's with '/' separator.
static java.lang.String getClasspathItemBaseDir(java.io.File classpathItem)
          Returns base folder for classpath item.
static java.util.jar.Manifest getClasspathItemManifest(java.io.File classpathItem)
          Returns classpath item manifest or null if not found.
static java.lang.ClassLoader getDefaultClassLoader()
          Returns default class loader.
static java.io.File[] getDefaultClasspath()
          Returns default classpath using default classloader.
static java.io.File[] getDefaultClasspath(java.lang.ClassLoader classLoader)
          Returns default class path from all available URLClassLoader in classloader hierarchy.
static java.io.InputStream getResourceAsStream(java.lang.String resourceName)
          Opens a resource of the specified name for reading.
static java.io.InputStream getResourceAsStream(java.lang.String resourceName, java.lang.ClassLoader callingClass)
          Opens a resource of the specified name for reading.
static java.io.File getResourceFile(java.lang.String resourceName)
          Retrieves resource as file.
static java.io.File getResourceFile(java.lang.String resourceName, java.lang.ClassLoader classLoader)
          Retrieves resource as file.
static java.net.URL getResourceUrl(java.lang.String resourceName)
          Retrieves given resource as URL.
static java.net.URL getResourceUrl(java.lang.String resourceName, java.lang.ClassLoader classLoader)
          Retrieves given resource as URL.
static java.lang.ClassLoader getSystemClassLoader()
          Returns system class loader.
static java.lang.Class loadClass(java.lang.String className)
           
static java.lang.Class loadClass(java.lang.String className, java.lang.ClassLoader classLoader)
          Loads a class with a given name dynamically, more reliable then Class.forName.
static java.lang.String prepareClassnameForLoading(java.lang.String className)
          Prepares classname for loading.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PRIMITIVE_TYPE_NAMES

public static final java.lang.String[] PRIMITIVE_TYPE_NAMES
List of primitive type names.


PRIMITIVE_TYPES

public static final java.lang.Class[] PRIMITIVE_TYPES
List of primitive types that matches names list.


PRIMITIVE_BYTECODE_NAME

public static final char[] PRIMITIVE_BYTECODE_NAME
List of primitive bytecode characters that matches names list.

Constructor Detail

ClassLoaderUtil

public ClassLoaderUtil()
Method Detail

getDefaultClassLoader

public static java.lang.ClassLoader getDefaultClassLoader()
Returns default class loader. By default, it is thread context class loader. If this one is null then class loader that loaded this class is returned.


getSystemClassLoader

public static java.lang.ClassLoader getSystemClassLoader()
Returns system class loader.


addFileToClassPath

public static void addFileToClassPath(java.lang.String path,
                                      java.lang.ClassLoader classLoader)
Adds additional file or path to classpath during runtime.

See Also:
addUrlToClassPath(java.net.URL, ClassLoader)

addFileToClassPath

public static void addFileToClassPath(java.io.File path,
                                      java.lang.ClassLoader classLoader)
Adds additional file or path to classpath during runtime.

See Also:
addUrlToClassPath(java.net.URL, ClassLoader)

addUrlToClassPath

public static void addUrlToClassPath(java.net.URL url,
                                     java.lang.ClassLoader classLoader)
Adds the content pointed by the URL to the classpath during runtime. Uses reflection since addURL method of URLClassLoader is protected.


defineClass

public static java.lang.Class defineClass(byte[] classData)
Defines a class from byte array into the system class loader.

See Also:
defineClass(String, byte[], ClassLoader)

defineClass

public static java.lang.Class defineClass(java.lang.String className,
                                          byte[] classData)
Defines a class from byte array into the system class loader.

See Also:
defineClass(String, byte[], ClassLoader)

defineClass

public static java.lang.Class defineClass(byte[] classData,
                                          java.lang.ClassLoader classLoader)
Defines a class from byte array into the specified class loader.

See Also:
defineClass(String, byte[], ClassLoader)

defineClass

public static java.lang.Class defineClass(java.lang.String className,
                                          byte[] classData,
                                          java.lang.ClassLoader classLoader)
Defines a class from byte array into the specified class loader. Warning: this is a hack!

Parameters:
className - optional class name, may be null
classData - bytecode data
classLoader - classloader that will load class

findClass

public static java.lang.Class findClass(java.lang.String className,
                                        java.io.File[] classPath)
See Also:
findClass(String, java.net.URL[], ClassLoader)

findClass

public static java.lang.Class findClass(java.lang.String className,
                                        java.net.URL[] classPath)
See Also:
findClass(String, java.net.URL[], ClassLoader)

findClass

public static java.lang.Class findClass(java.lang.String className,
                                        java.net.URL[] classPath,
                                        java.lang.ClassLoader parent)
Finds and loads class on classpath even if it was already loaded.


findToolsJar

public static java.io.File findToolsJar()
Finds tools.jar. Returns null if does not exist.


getClasspathItemManifest

public static java.util.jar.Manifest getClasspathItemManifest(java.io.File classpathItem)
Returns classpath item manifest or null if not found.


getClasspathItemBaseDir

public static java.lang.String getClasspathItemBaseDir(java.io.File classpathItem)
Returns base folder for classpath item. If item is a (jar) file, its parent is returned. If item is a directory, its name is returned.


getDefaultClasspath

public static java.io.File[] getDefaultClasspath()
Returns default classpath using default classloader.


getDefaultClasspath

public static java.io.File[] getDefaultClasspath(java.lang.ClassLoader classLoader)
Returns default class path from all available URLClassLoader in classloader hierarchy. The following is added to the classpath list:
  • file URLs from URLClassLoader (other URL protocols are ignored)
  • inner entries from containing manifest files (if exist)
  • bootstrap classpath


  • getResourceUrl

    public static java.net.URL getResourceUrl(java.lang.String resourceName)
    Retrieves given resource as URL.

    See Also:
    getResourceUrl(String, ClassLoader)

    getResourceUrl

    public static java.net.URL getResourceUrl(java.lang.String resourceName,
                                              java.lang.ClassLoader classLoader)
    Retrieves given resource as URL. Resource is always absolute and may starts with a slash character.

    Resource will be loaded using class loaders in the following order:


    getResourceFile

    public static java.io.File getResourceFile(java.lang.String resourceName)
    Retrieves resource as file.

    See Also:
    getResourceFile(String)

    getResourceFile

    public static java.io.File getResourceFile(java.lang.String resourceName,
                                               java.lang.ClassLoader classLoader)
    Retrieves resource as file. Resource is retrieved as URL, than it is converted to URI so it can be used by File constructor.


    getResourceAsStream

    public static java.io.InputStream getResourceAsStream(java.lang.String resourceName)
                                                   throws java.io.IOException
    Opens a resource of the specified name for reading.

    Throws:
    java.io.IOException
    See Also:
    getResourceAsStream(String, ClassLoader)

    getResourceAsStream

    public static java.io.InputStream getResourceAsStream(java.lang.String resourceName,
                                                          java.lang.ClassLoader callingClass)
                                                   throws java.io.IOException
    Opens a resource of the specified name for reading.

    Throws:
    java.io.IOException
    See Also:
    getResourceUrl(String, ClassLoader)

    getClassAsStream

    public static java.io.InputStream getClassAsStream(java.lang.Class clazz)
                                                throws java.io.IOException
    Opens a class of the specified name for reading using class classloader.

    Throws:
    java.io.IOException
    See Also:
    getResourceAsStream(String, ClassLoader)

    getClassAsStream

    public static java.io.InputStream getClassAsStream(java.lang.String className)
                                                throws java.io.IOException
    Opens a class of the specified name for reading. No specific classloader is used for loading class.

    Throws:
    java.io.IOException
    See Also:
    getResourceAsStream(String, ClassLoader)

    prepareClassnameForLoading

    public static java.lang.String prepareClassnameForLoading(java.lang.String className)
    Prepares classname for loading.


    loadClass

    public static java.lang.Class loadClass(java.lang.String className)
                                     throws java.lang.ClassNotFoundException
    Throws:
    java.lang.ClassNotFoundException

    loadClass

    public static java.lang.Class loadClass(java.lang.String className,
                                            java.lang.ClassLoader classLoader)
                                     throws java.lang.ClassNotFoundException
    Loads a class with a given name dynamically, more reliable then Class.forName.

    Class will be loaded using class loaders in the following order:

    Throws:
    java.lang.ClassNotFoundException

    getClassFileName

    public static java.lang.String getClassFileName(java.lang.Class clazz)
    Resolves class file name from class name by replacing dot's with '/' separator and adding class extension at the end. If array, component type is returned.


    getClassFileName

    public static java.lang.String getClassFileName(java.lang.String className)
    Resolves class file name from class name by replacing dot's with '/' separator.



    Copyright © 2003-2012 Jodd Team