public interface ISimpleCompiler extends ICookable
Opposed to a normal ".java" file, you can declare multiple public classes here.
To set up an ISimpleCompiler
object, proceed as follows:
ISimpleCompiler
-implementing objectsetParentClassLoader(ClassLoader)
.ICookable.cook(String, Reader)
methods to scan, parse, compile and load the compilation
unit into the JVM.
getClassLoader()
to obtain a ClassLoader
that you can use to access the compiled classes.
The methods setPermissions(Permissions permissions)
and void setNoPermissions()
were removed in
version 3.1.1 (2020-03-09) and replaced by the Sandbox
.
Modifier and Type | Method and Description |
---|---|
ClassLoader |
getClassLoader()
Returns a
ClassLoader object through which the previously compiled classes can be accessed. |
void |
setCompileErrorHandler(ErrorHandler compileErrorHandler)
Installs an
ErrorHandler which is invoked during compilation on each error. |
void |
setDebuggingInformation(boolean debugSource,
boolean debugLines,
boolean debugVars)
Determines what kind of debugging information is included in the generates classes.
|
void |
setParentClassLoader(ClassLoader parentClassLoader)
The "parent class loader" is used to load referenced classes.
|
void |
setWarningHandler(WarningHandler warningHandler)
By default, warnings are discarded, but an application my install a custom
WarningHandler which is
invoked for each warning. |
void setParentClassLoader(@Nullable ClassLoader parentClassLoader)
System.getSystemClassLoader() |
The running JVM's class path |
Thread.currentThread().getContextClassLoader() or null |
The class loader effective for the invoking thread |
ClassLoaders.BOOTCLASSPATH_CLASS_LOADER |
The running JVM's boot class path |
The parent class loader defaults to the current thread's context class loader.
void setDebuggingInformation(boolean debugSource, boolean debugLines, boolean debugVars)
-g:none
".void setCompileErrorHandler(@Nullable ErrorHandler compileErrorHandler)
ErrorHandler
which is invoked during compilation on each error. (By default, the compilation
throws a CompileException
on the first error and terminates.)
If the given ErrorHandler
throws a CompileException
, then the compilation terminates and
the exception is propagated.
If the given ErrorHandler
does not throw a CompileException
but completes normally, then the
compilation may or may not continue, depending on the error. Iff the compilation
completes normally but errors were reported, then it will throw a CompileException
indicating the
number of errors.
In other words: The ErrorHandler
may throw a CompileException
or not, but the compilation will
definitely throw a CompileException
if one or more compile errors have occurred.
compileErrorHandler
- null
to restore the default behavior (throwing a CompileException
)void setWarningHandler(@Nullable WarningHandler warningHandler)
WarningHandler
which is
invoked for each warning. If, for some untypical reason, that warning handler wants to terminate the compilation
as quickly as possible, then it would throw a CompileException
.warningHandler
- null
to indicate that no warnings be issuedClassLoader getClassLoader()
ClassLoader
object through which the previously compiled classes can be accessed. This ClassLoader
can be used for subsequent ISimpleCompiler
s in order to compile compilation units that use
types (e.g. declare derived types) declared in the previous one.
This method must only be called after exactly one of the ICookable.cook(String, java.io.Reader)
methods was
called.
Copyright © 2022. All rights reserved.