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_Enum__ordinal, METH_java_lang_Iterable__iterator, METH_java_lang_String__concat__java_lang_String, METH_java_lang_String__equals__java_lang_Object, METH_java_lang_String__hashCode, 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_lang_Throwable__addSuppressed, 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_System, 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)
Finds a new
IClass by descriptor and calls IClassLoader.defineIClass(IClass). |
Set<UnitCompiler> |
getUnitCompilers()
Returns the set of
UnitCompilers that were created so far. |
EnumSet<JaninoOption> |
options() |
JavaSourceIClassLoader |
options(EnumSet<JaninoOption> options)
Sets the options for all future compilations.
|
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)
public EnumSet<JaninoOption> options()
public JavaSourceIClassLoader options(EnumSet<JaninoOption> options)
@Nullable public IClass findIClass(String fieldDescriptor) throws ClassNotFoundException
IClassLoaderIClass by descriptor and calls IClassLoader.defineIClass(IClass).
Similar ClassLoader.findClass(java.lang.String), this method must
IClass object from somewhere for the given typeIClassLoader.defineIClass(IClass) with that IClass object as the argumentIClass object
The format of a descriptor is defined in JVMS 4.3.2. Typical descriptors are:
I (Integer)Lpkg1/pkg2/Clazz; (Class declared in package)Lpkg1/pkg2/Outer$Inner; Member classNotice 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 thread-safe.
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 foundIOExceptionCompileExceptionCopyright © 2019. All rights reserved.