我知道java.lang.ClassLoader通常是我扩展的类加载器(需要时)。另外,当我看到tomcat的自定义类加载器时,Jetty等从java.lang.ClassLoader扩展。
我很想了解com.sun.org.apache.bcel.internal.util.ClassLoader的目的和用法。
有人可以帮我理解吗?
答案 0 :(得分:1)
通过包名称的“bcel”部分判断类加载器不只是加载类,它会动态改变字节码(参见bcel主页)。
编辑:可以找到更多关于它们用它做什么的信息here:“XSLTC在内部使用BCEL将”XSLT样式表“编译成字节码以便执行”
答案 1 :(得分:1)
com.sun.org.apache.bcel.internal
只是Apache BCEL的重新包装。特别是,我们感兴趣的课程(ClassLoader
)记录在案here ...
替换JVM的标准类加载器。您可以将它与
JavaWrapper
结合使用,以便在请求时动态修改/创建类。此类加载器以不同的格式识别特殊请求,即,当所请求的类的名称包含“ $$ BCEL $$ ”时,它会使用该方法调用
createClass()
方法name( $$ BCEL $$ 之前的所有内容都被认为是包名。您可以继承类加载器并覆盖该方法。“正常”类类可以通过覆盖{{3}来修改在modifyClass()
之前调用的方法。