Class IClassLoader

java.lang.Object
org.codehaus.janino.IClassLoader
Direct Known Subclasses:
ClassLoaderIClassLoader, JavaSourceIClassLoader, ResourceFinderIClassLoader

public abstract class IClassLoader extends Object
Loads an IClass by type name.
  • Field Details

    • JAVA_LANG_OBJECT

      public IClass JAVA_LANG_OBJECT
    • JAVA_LANG_STRING

      public IClass JAVA_LANG_STRING
    • JAVA_LANG_CLASS

      public IClass JAVA_LANG_CLASS
    • JAVA_LANG_THROWABLE

      public IClass JAVA_LANG_THROWABLE
    • JAVA_LANG_RUNTIMEEXCEPTION

      public IClass JAVA_LANG_RUNTIMEEXCEPTION
    • JAVA_LANG_ERROR

      public IClass JAVA_LANG_ERROR
    • JAVA_LANG_CLONEABLE

      public IClass JAVA_LANG_CLONEABLE
    • JAVA_LANG_ASSERTIONERROR

      public IClass JAVA_LANG_ASSERTIONERROR
    • JAVA_LANG_OVERRIDE

      public IClass JAVA_LANG_OVERRIDE
    • JAVA_IO_SERIALIZABLE

      public IClass JAVA_IO_SERIALIZABLE
    • JAVA_LANG_BOOLEAN

      public IClass JAVA_LANG_BOOLEAN
    • JAVA_LANG_BYTE

      public IClass JAVA_LANG_BYTE
    • JAVA_LANG_CHARACTER

      public IClass JAVA_LANG_CHARACTER
    • JAVA_LANG_SHORT

      public IClass JAVA_LANG_SHORT
    • JAVA_LANG_INTEGER

      public IClass JAVA_LANG_INTEGER
    • JAVA_LANG_LONG

      public IClass JAVA_LANG_LONG
    • JAVA_LANG_FLOAT

      public IClass JAVA_LANG_FLOAT
    • JAVA_LANG_DOUBLE

      public IClass JAVA_LANG_DOUBLE
  • Constructor Details

    • IClassLoader

      public IClassLoader(IClassLoader optionalParentIClassLoader)
  • Method Details

    • postConstruct

      protected final void postConstruct()
      This method must be called by the constructor of the directly derived class. (The reason being is that this method invokes abstract loadIClass(String) which will not work until the implementing class is constructed.)
    • loadIClass

      public final IClass loadIClass(String fieldDescriptor) throws ClassNotFoundException
      Get an IClass by field descriptor.
      Parameters:
      fieldDescriptor - E.g. 'Lpkg1/pkg2/Outer$Inner;'
      Returns:
      null if an IClass could not be loaded
      Throws:
      ClassNotFoundException - An exception was raised while loading the IClass
    • findIClass

      protected abstract IClass findIClass(String descriptor) throws ClassNotFoundException
      Find a new IClass by descriptor; return null if a class for that descriptor could not be found.

      Similar ClassLoader.findClass(java.lang.String), this method must

      The format of a descriptor is defined in JVMS 4.3.2. Typical descriptors are:

      • I (Integer)
      • Lpkg1/pkg2/Cls; (Class declared in package)
      • Lpkg1/pkg2/Outer$Inner; Member class
      Notice that this method is never called for array types.

      Notice that this method is never called from more than one thread at a time. In other words, implementations of this method need not be synchronized.

      Returns:
      null if a class with that descriptor could not be found
      Throws:
      ClassNotFoundException - if an exception was raised while loading the class
    • defineIClass

      protected final void defineIClass(IClass iClass)
      Define an IClass in the context of this IClassLoader. If an IClass with that descriptor already exists, a RuntimeException is thrown.

      This method should only be called from an implementation of findIClass(String).

      Throws:
      RuntimeException - A different IClass object is already defined for this type
    • createJavacLikePathIClassLoader

      public static IClassLoader createJavacLikePathIClassLoader(File[] optionalBootClassPath, File[] optionalExtDirs, File[] classPath)
      Create an IClassLoader that looks for classes in the given "boot class path", then in the given "extension directories", and then in the given "class path".

      The default for the optionalBootClassPath is the path defined in the system property "sun.boot.class.path", and the default for the optionalExtensionDirs is the path defined in the "java.ext.dirs" system property.