public class JavaSourceIClassLoader extends IClassLoader
IClassLoader finds, scans and parses compilation units.
Notice that it does not compile them!
CTOR_java_lang_StringBuilder__java_lang_String, METH_java_lang_Iterable__iterator, METH_java_lang_String__concat__java_lang_String, METH_java_lang_String__valueOf__boolean, METH_java_lang_String__valueOf__char, METH_java_lang_String__valueOf__double, METH_java_lang_String__valueOf__float, METH_java_lang_String__valueOf__int, METH_java_lang_String__valueOf__java_lang_Object, METH_java_lang_String__valueOf__long, METH_java_lang_StringBuilder__append__boolean, METH_java_lang_StringBuilder__append__char, METH_java_lang_StringBuilder__append__double, METH_java_lang_StringBuilder__append__float, METH_java_lang_StringBuilder__append__int, METH_java_lang_StringBuilder__append__java_lang_Object, METH_java_lang_StringBuilder__append__java_lang_String, METH_java_lang_StringBuilder__append__long, METH_java_lang_StringBuilder__toString, METH_java_util_Iterator__hasNext, METH_java_util_Iterator__next, TYPE_java_io_Serializable, TYPE_java_lang_annotation_Retention, TYPE_java_lang_AssertionError, TYPE_java_lang_Boolean, TYPE_java_lang_Byte, TYPE_java_lang_Character, TYPE_java_lang_Class, TYPE_java_lang_Cloneable, TYPE_java_lang_Double, TYPE_java_lang_Enum, TYPE_java_lang_Error, TYPE_java_lang_Exception, TYPE_java_lang_Float, TYPE_java_lang_Integer, TYPE_java_lang_Iterable, TYPE_java_lang_Long, TYPE_java_lang_Object, TYPE_java_lang_Override, TYPE_java_lang_RuntimeException, TYPE_java_lang_Short, TYPE_java_lang_String, TYPE_java_lang_StringBuilder, TYPE_java_lang_Throwable, TYPE_java_util_Iterator| Constructor and Description |
|---|
JavaSourceIClassLoader(ResourceFinder sourceFinder,
String optionalCharacterEncoding,
IClassLoader optionalParentIClassLoader) |
| Modifier and Type | Method and Description |
|---|---|
protected Java.CompilationUnit |
findCompilationUnit(String className)
Finds the Java™ source file for the named class through the configured 'source resource finder' and
parses it.
|
IClass |
findIClass(String fieldDescriptor)
|
Set<UnitCompiler> |
getUnitCompilers()
Returns the set of
UnitCompilers that were created so far. |
void |
setCharacterEncoding(String optionalCharacterEncoding) |
void |
setCompileErrorHandler(ErrorHandler optionalCompileErrorHandler) |
void |
setSourceFinder(ResourceFinder pathResourceFinder) |
void |
setWarningHandler(WarningHandler optionalWarningHandler) |
createJavacLikePathIClassLoader, defineIClass, loadIClass, postConstructpublic JavaSourceIClassLoader(ResourceFinder sourceFinder, @Nullable String optionalCharacterEncoding, @Nullable IClassLoader optionalParentIClassLoader)
public Set<UnitCompiler> getUnitCompilers()
UnitCompilers that were created so far.public void setSourceFinder(ResourceFinder pathResourceFinder)
pathResourceFinder - The source pathpublic void setCharacterEncoding(@Nullable
String optionalCharacterEncoding)
optionalCharacterEncoding - The name of the charset that is used to read source files, or null to
use the platform's 'default charset'public void setCompileErrorHandler(@Nullable
ErrorHandler optionalCompileErrorHandler)
public void setWarningHandler(@Nullable
WarningHandler optionalWarningHandler)
@Nullable public IClass findIClass(String fieldDescriptor) throws ClassNotFoundException
IClassLoaderIClass by descriptor; return null if a class
for that descriptor could not be found.
Similar ClassLoader.findClass(java.lang.String), this method
must
IClass object from somewhere for the given type
IClassLoader.defineIClass(IClass) with that IClass object as
the argument
IClass object
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 from more than one thread at a time. In other words, implementations of this method need not be synchronized.
findIClass in class IClassLoaderfieldDescriptor - Field descriptor of the IClass to load, e.g. "Lpkg1/pkg2/Outer$Inner;"null if a class with that descriptor could not be foundClassNotFoundException - An exception was raised while loading the IClass@Nullable protected Java.CompilationUnit findCompilationUnit(String className) throws IOException, CompileException
null iff the source file could not be foundIOExceptionCompileException