JavaSourceClassLoader
, JavaSourceClassLoader
public abstract class AbstractJavaSourceClassLoader extends ClassLoader
ClassLoader
that, unlike usual ClassLoader
s, 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 | Description |
---|---|---|
static interface |
AbstractJavaSourceClassLoader.ProtectionDomainFactory |
Modifier and Type | Field | Description |
---|---|---|
protected AbstractJavaSourceClassLoader.ProtectionDomainFactory |
optionalProtectionDomainFactory |
Constructor | Description |
---|---|
AbstractJavaSourceClassLoader() |
|
AbstractJavaSourceClassLoader(ClassLoader parentClassLoader) |
Modifier and Type | Method | Description |
---|---|---|
static void |
main(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(String optionalCharacterEncoding) |
|
abstract void |
setSourcePath(File[] sourcePath) |
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findClass, findLibrary, findLoadedClass, findResource, findResource, findResources, findSystemClass, getClassLoadingLock, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
protected AbstractJavaSourceClassLoader.ProtectionDomainFactory optionalProtectionDomainFactory
public AbstractJavaSourceClassLoader()
public AbstractJavaSourceClassLoader(ClassLoader parentClassLoader)
public abstract void setSourcePath(File[] sourcePath)
sourcePath
- The sequence of directories to search for Java™ source filespublic abstract void setSourceFileCharacterEncoding(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)
public static void main(String[] args) throws 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
Exception
Copyright © 2001–2019. All rights reserved.