public class ClassLoader extends ClassLoader
Drop in replacement for the standard class loader of the JVM. You can use it in conjunction with the JavaWrapper to dynamically modify/create classes as they're requested.
This class loader recognizes special requests in a distinct format, i.e., when the name of the requested class contains with "$$BCEL$$" it calls the createClass() method with that name (everything bevor the $$BCEL$$ is considered to be the package name. You can subclass the class loader and override that method. "Normal" classes class can be modified by overriding the modifyClass() method which is called just before defineClass().
There may be a number of packages where you have to use the default class loader (which may also be faster). You can define the set of packages where to use the system class loader in the constructor. The default value contains "java.", "sun.", "javax."
JavaWrapper
,
ClassPath
Modifier and Type | Field and Description |
---|---|
static String[] |
DEFAULT_IGNORED_PACKAGES |
Constructor and Description |
---|
ClassLoader()
Ignored packages are by default ( "java.", "sun.",
"javax."), i.e.
|
ClassLoader(ClassLoader deferTo) |
ClassLoader(ClassLoader deferTo,
String[] ignored_packages) |
ClassLoader(String[] ignored_packages) |
Modifier and Type | Method and Description |
---|---|
protected JavaClass |
createClass(String class_name)
Override this method to create you own classes on the fly.
|
protected Class<?> |
loadClass(String class_name,
boolean resolve) |
protected JavaClass |
modifyClass(JavaClass clazz)
Override this method if you want to alter a class before it gets actually
loaded.
|
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findResources, findSystemClass, getClassLoadingLock, getPackage, getPackages, getParent, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, registerAsParallelCapable, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
public static final String[] DEFAULT_IGNORED_PACKAGES
public ClassLoader()
public ClassLoader(ClassLoader deferTo)
deferTo
- delegate class loader to use for ignored packagespublic ClassLoader(String[] ignored_packages)
ignored_packages
- classes contained in these packages will be loaded
with the system class loaderpublic ClassLoader(ClassLoader deferTo, String[] ignored_packages)
ignored_packages
- classes contained in these packages will be loaded
with the system class loaderdeferTo
- delegate class loader to use for ignored packagesprotected Class<?> loadClass(String class_name, boolean resolve) throws ClassNotFoundException
loadClass
in class ClassLoader
ClassNotFoundException
protected JavaClass modifyClass(JavaClass clazz)
protected JavaClass createClass(String class_name)
class_name
- compressed byte code with "$$BCEL$$" in itCopyright © 2017. All rights reserved.