Class ClassLoader


  • @Deprecated
    public class ClassLoader
    extends java.lang.ClassLoader
    Deprecated.
    6.0 Do not use - does not work

    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."

    See Also:
    JavaWrapper, ClassPath
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String[] DEFAULT_IGNORED_PACKAGES
      Deprecated.
       
    • Constructor Summary

      Constructors 
      Constructor Description
      ClassLoader()
      Deprecated.
      Ignored packages are by default ( "java.", "sun.", "javax."), i.e.
      ClassLoader​(java.lang.ClassLoader deferTo)
      Deprecated.
       
      ClassLoader​(java.lang.ClassLoader deferTo, java.lang.String[] ignored_packages)
      Deprecated.
       
      ClassLoader​(java.lang.String[] ignored_packages)
      Deprecated.
       
    • Method Summary

      All Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      protected JavaClass createClass​(java.lang.String class_name)
      Deprecated.
      Override this method to create you own classes on the fly.
      protected java.lang.Class<?> loadClass​(java.lang.String class_name, boolean resolve)
      Deprecated.
       
      protected JavaClass modifyClass​(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, 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, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • DEFAULT_IGNORED_PACKAGES

        public static final java.lang.String[] DEFAULT_IGNORED_PACKAGES
        Deprecated.
    • Constructor Detail

      • ClassLoader

        public ClassLoader()
        Deprecated.
        Ignored packages are by default ( "java.", "sun.", "javax."), i.e. loaded by system class loader
      • ClassLoader

        public ClassLoader​(java.lang.ClassLoader deferTo)
        Deprecated.
        Parameters:
        deferTo - delegate class loader to use for ignored packages
      • ClassLoader

        public ClassLoader​(java.lang.String[] ignored_packages)
        Deprecated.
        Parameters:
        ignored_packages - classes contained in these packages will be loaded with the system class loader
      • ClassLoader

        public ClassLoader​(java.lang.ClassLoader deferTo,
                           java.lang.String[] ignored_packages)
        Deprecated.
        Parameters:
        ignored_packages - classes contained in these packages will be loaded with the system class loader
        deferTo - delegate class loader to use for ignored packages
    • Method Detail

      • loadClass

        protected java.lang.Class<?> loadClass​(java.lang.String class_name,
                                               boolean resolve)
                                        throws java.lang.ClassNotFoundException
        Deprecated.
        Overrides:
        loadClass in class java.lang.ClassLoader
        Throws:
        java.lang.ClassNotFoundException
      • modifyClass

        protected JavaClass modifyClass​(JavaClass clazz)
        Deprecated.
        Override this method if you want to alter a class before it gets actually loaded. Does nothing by default.
      • createClass

        protected JavaClass createClass​(java.lang.String class_name)
        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, i.e., 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:
        class_name - compressed byte code with "$$BCEL$$" in it