public abstract class AbstractJavaSourceClassLoader
extends java.lang.ClassLoader
ClassLoader that, unlike usual ClassLoaders, does not load byte code, but reads Java™ source
code and then scans, parses, compiles and loads it into the virtual machine.
As with any ClassLoader, it is not possible to "update" classes after they've been loaded. The way to
achieve this is to give up on the AbstractJavaSourceClassLoader and create a new one.
| Modifier and Type | Class and Description |
|---|---|
static interface |
AbstractJavaSourceClassLoader.ProtectionDomainFactory |
| Modifier and Type | Field and Description |
|---|---|
protected AbstractJavaSourceClassLoader.ProtectionDomainFactory |
optionalProtectionDomainFactory |
| Constructor and Description |
|---|
AbstractJavaSourceClassLoader() |
AbstractJavaSourceClassLoader(java.lang.ClassLoader parentClassLoader) |
| Modifier and Type | Method and Description |
|---|---|
static void |
main(java.lang.String[] args)
Read Java™ source code for a given class name, scan, parse, compile and load it into the virtual machine,
and invoke its "main()" method with the given arguments.
|
abstract void |
setDebuggingInfo(boolean lines,
boolean vars,
boolean source) |
void |
setProtectionDomainFactory(AbstractJavaSourceClassLoader.ProtectionDomainFactory optionalProtectionDomainFactory) |
abstract void |
setSourceFileCharacterEncoding(java.lang.String optionalCharacterEncoding) |
abstract void |
setSourcePath(java.io.File[] sourcePath) |
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findResources, findSystemClass, getClassLoadingLock, getPackage, getPackages, getParent, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, loadClass, registerAsParallelCapable, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSignersprotected AbstractJavaSourceClassLoader.ProtectionDomainFactory optionalProtectionDomainFactory
ClassLoader.defineClass(String, byte[], int, int, ProtectionDomain)public AbstractJavaSourceClassLoader()
public AbstractJavaSourceClassLoader(java.lang.ClassLoader parentClassLoader)
public abstract void setSourcePath(java.io.File[] sourcePath)
sourcePath - The sequence of directories to search for Java™ source filespublic abstract void setSourceFileCharacterEncoding(java.lang.String optionalCharacterEncoding)
optionalCharacterEncoding - if null, use platform default encodingpublic abstract void setDebuggingInfo(boolean lines,
boolean vars,
boolean source)
lines - Whether line number debugging information should be generatedvars - Whether variables debugging information should be generatedsource - Whether source file debugging information should be generatedpublic final void setProtectionDomainFactory(AbstractJavaSourceClassLoader.ProtectionDomainFactory optionalProtectionDomainFactory)
ClassLoader.defineClass(String, byte[], int, int, ProtectionDomain)public static void main(java.lang.String[] args)
throws java.lang.Exception
Usage is as follows:
java AbstractJavaSourceClassLoader [ option ] ... class-name [ argument ] ...
option:
-sourcepath colon-separated-list-of-source-directories
-encoding character-encoding
-g Generate all debugging info
-g:none Generate no debugging info
-g:{source,lines,vars} Generate only some debugging info
java.lang.Exception