Java中的类加载器变体和用法

时间:2012-09-09 07:29:40

标签: java classloader

我知道java.lang.ClassLoader通常是我扩展的类加载器(需要时)。另外,当我看到tomcat的自定义类加载器时,Jetty等从java.lang.ClassLoader扩展。

我很想了解com.sun.org.apache.bcel.internal.util.ClassLoader的目的和用法。

有人可以帮我理解吗?

2 个答案:

答案 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()之前调用的方法。