Class ClassLoader
- java.lang.Object
-
- java.lang.ClassLoader
-
- org.apache.bcel.util.ClassLoader
-
@Deprecated public class ClassLoader extends java.lang.ClassLoaderDeprecated.6.0 Do not use - does not workDrop 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, that is, 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."
- See Also:
JavaWrapper,ClassPath
-
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.StringBCEL_TOKENDeprecated.private java.util.Hashtable<java.lang.String,java.lang.Class<?>>classesDeprecated.static java.lang.String[]DEFAULT_IGNORED_PACKAGESDeprecated.Default packages that are ignored by the class loader.private java.lang.String[]ignoredPackagesDeprecated.private RepositoryrepositoryDeprecated.
-
Constructor Summary
Constructors Constructor Description ClassLoader()Deprecated.Constructs a ClassLoader with default ignored packages.ClassLoader(java.lang.ClassLoader deferTo)Deprecated.Constructs a ClassLoader with a delegate class loader.ClassLoader(java.lang.ClassLoader deferTo, java.lang.String[] ignoredPackages)Deprecated.Constructs a ClassLoader with a delegate class loader and ignored packages.ClassLoader(java.lang.String[] ignoredPackages)Deprecated.Constructs a ClassLoader with specific ignored packages.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected JavaClasscreateClass(java.lang.String className)Deprecated.Override this method to create you own classes on the fly.protected java.lang.Class<?>loadClass(java.lang.String className, boolean resolve)Deprecated.protected JavaClassmodifyClass(JavaClass clazz)Deprecated.Override this method if you want to alter a class before it gets actually loaded.-
Methods inherited from class java.lang.ClassLoader
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
-
-
-
-
Field Detail
-
BCEL_TOKEN
private static final java.lang.String BCEL_TOKEN
Deprecated.- See Also:
- Constant Field Values
-
DEFAULT_IGNORED_PACKAGES
public static final java.lang.String[] DEFAULT_IGNORED_PACKAGES
Deprecated.Default packages that are ignored by the class loader.
-
classes
private final java.util.Hashtable<java.lang.String,java.lang.Class<?>> classes
Deprecated.
-
ignoredPackages
private final java.lang.String[] ignoredPackages
Deprecated.
-
repository
private Repository repository
Deprecated.
-
-
Constructor Detail
-
ClassLoader
public ClassLoader()
Deprecated.Constructs a ClassLoader with default ignored packages. Ignored packages are by default ( "java.", "sun.", "javax."), for example loaded by system class loader.
-
ClassLoader
public ClassLoader(java.lang.ClassLoader deferTo)
Deprecated.Constructs a ClassLoader with a delegate class loader.- Parameters:
deferTo- delegate class loader to use for ignored packages.
-
ClassLoader
public ClassLoader(java.lang.ClassLoader deferTo, java.lang.String[] ignoredPackages)Deprecated.Constructs a ClassLoader with a delegate class loader and ignored packages.- Parameters:
deferTo- delegate class loader to use for ignored packages.ignoredPackages- classes contained in these packages will be loaded with the system class loader.
-
ClassLoader
public ClassLoader(java.lang.String[] ignoredPackages)
Deprecated.Constructs a ClassLoader with specific ignored packages.- Parameters:
ignoredPackages- classes contained in these packages will be loaded with the system class loader.
-
-
Method Detail
-
createClass
protected JavaClass createClass(java.lang.String className)
Deprecated.Override this method to create you own classes on the fly. The name contains the special token $$BCEL$$. Everything before that token is considered to be a package name. You can encode your own arguments into the subsequent string. You must ensure however not to use any "illegal" characters, that is, characters that may not appear in a Java class name too.The default implementation interprets the string as a encoded compressed Java class, unpacks and decodes it with the Utility.decode() method, and parses the resulting byte array and returns the resulting JavaClass object.
- Parameters:
className- compressed byte code with "$$BCEL$$" in it.- Returns:
- the created JavaClass.
-
loadClass
protected java.lang.Class<?> loadClass(java.lang.String className, boolean resolve) throws java.lang.ClassNotFoundExceptionDeprecated.- Overrides:
loadClassin classjava.lang.ClassLoader- Throws:
java.lang.ClassNotFoundException
-
-