Interface ISimpleCompiler
- All Superinterfaces:
ICookable
- All Known Implementing Classes:
SimpleCompiler, SimpleCompiler
Opposed to a normal ".java" file, you can declare multiple public classes here.
To set up an ISimpleCompiler object, proceed as follows:
- Create an
ISimpleCompiler-implementing object - Optionally set an alternate parent class loader through
setParentClassLoader(ClassLoader). -
Call any of the
ICookable.cook(String, Reader)methods to scan, parse, compile and load the compilation unit into the JVM. -
Call
getClassLoader()to obtain aClassLoaderthat you can use to access the compiled classes.
Comptibility notice:
The methods setPermissions(Permissions permissions) and void setNoPermissions() were removed in
version 3.1.1 (2020-03-09) and replaced by the Sandbox.
-
Method Summary
Modifier and TypeMethodDescriptionReturns aClassLoaderobject through which the previously compiled classes can be accessed.voidsetCompileErrorHandler(ErrorHandler compileErrorHandler) Installs anErrorHandlerwhich is invoked during compilation on each error.voidsetDebuggingInformation(boolean debugSource, boolean debugLines, boolean debugVars) Determines what kind of debugging information is included in the generates classes.voidsetParentClassLoader(ClassLoader parentClassLoader) The "parent class loader" is used to load referenced classes.voidsetWarningHandler(WarningHandler warningHandler) By default, warnings are discarded, but an application my install a customWarningHandlerwhich is invoked for each warning.
-
Method Details
-
setParentClassLoader
The "parent class loader" is used to load referenced classes. Useful values are:System.getSystemClassLoader()The running JVM's class path Thread.currentThread().getContextClassLoader()ornullThe class loader effective for the invoking thread ClassLoaders.BOOTCLASSPATH_CLASS_LOADERThe running JVM's boot class path The parent class loader defaults to the current thread's context class loader.
-
setDebuggingInformation
void setDebuggingInformation(boolean debugSource, boolean debugLines, boolean debugVars) Determines what kind of debugging information is included in the generates classes. The default is typically "-g:none". -
setCompileErrorHandler
Installs anErrorHandlerwhich is invoked during compilation on each error. (By default, the compilation throws aCompileExceptionon the first error and terminates.)If the given
ErrorHandlerthrows aCompileException, then the compilation terminates and the exception is propagated.If the given
ErrorHandlerdoes not throw aCompileExceptionbut 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 aCompileExceptionindicating the number of errors.In other words: The
ErrorHandlermay throw aCompileExceptionor not, but the compilation will definitely throw aCompileExceptionif one or more compile errors have occurred.- Parameters:
compileErrorHandler-nullto restore the default behavior (throwing aCompileException)
-
setWarningHandler
By default, warnings are discarded, but an application my install a customWarningHandlerwhich 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 aCompileException.- Parameters:
warningHandler-nullto indicate that no warnings be issued
-
getClassLoader
ClassLoader getClassLoader()Returns aClassLoaderobject through which the previously compiled classes can be accessed. ThisClassLoadercan be used for subsequentISimpleCompilers 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.
-