Class JavaSourceIClassLoader


  • public final class JavaSourceIClassLoader
    extends IClassLoader
    This IClassLoader finds, scans and parses compilation units.

    Notice that it does not compile them!

    • Constructor Detail

      • JavaSourceIClassLoader

        public JavaSourceIClassLoader​(ResourceFinder sourceFinder,
                                      java.lang.String optionalCharacterEncoding,
                                      java.util.Set unitCompilers,
                                      IClassLoader optionalParentIClassLoader)
        Notice that the unitCompilers set is both read and written by the JavaSourceIClassLoader: As it searches for IClasses, it looks into unitCompilers for class declarations, and as it opens, scans and parses compilation units on-the-fly, it adds them to unitCompilers.
    • Method Detail

      • setSourceFinder

        public void setSourceFinder​(ResourceFinder pathResourceFinder)
      • setCharacterEncoding

        public void setCharacterEncoding​(java.lang.String optionalCharacterEncoding)
      • findIClass

        public IClass findIClass​(java.lang.String fieldDescriptor)
                          throws java.lang.ClassNotFoundException
        Description copied from class: IClassLoader
        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.

        Specified by:
        findIClass in class IClassLoader
        Parameters:
        fieldDescriptor - Field descriptor of the IClass to load, e.g. "Lpkg1/pkg2/Outer$Inner;"
        Returns:
        null if a class with that descriptor could not be found
        Throws:
        java.lang.ClassNotFoundException - An exception was raised while loading the IClass