0

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

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

有人可以帮我理解吗?

4

2 回答 2

1

从包名的“bcel”部分判断,类加载器不只是加载类,它会即时更改字节码(参见bcel主页)。

编辑:可以在此处找到有关他们使用它的更多信息:“XSLTC 在内部使用 BCEL 将 XSLT 样式表“编译”成字节码以供执行”

于 2012-09-09T07:32:47.780 回答
1

com.sun.org.apache.bcel.internal只是Apache BCEL的重新包装。特别是,我们感兴趣的类 ( ClassLoader) 记录在这里...

替代 JVM 的标准类加载器。您可以将它与 结合使用,以根据JavaWrapper需要动态修改/创建类。

此类加载器以不同的格式识别特殊请求,即,当请求的类的名称包含“ $$BCEL$$ ”时,它会调用createClass()具有该名称的方法($$BCEL$$之前的所有内容都被认为是包名。您可以子类化类加载器并覆盖该方法。“普通”类可以通过覆盖modifyClass()之前调用的方法来修改defineClass()

于 2012-09-09T07:34:21.573 回答