0

java.lang.ClassLoader は通常、私が拡張するクラスローダーであることを理解しています (必要な場合)。また、Tomcat のカスタム クラスローダーを見ると、Jetty などが java.lang.ClassLoader から拡張されています。

com.sun.org.apache.bcel.internal.util.ClassLoader の目的と使用法を理解したいと思っています。

誰かがそれを理解するのを手伝ってくれますか?

4

2 に答える 2

1

com.sun.org.apache.bcel.internalApache BCELの単なる再パッケージ化です。特に、関心のあるクラス ( ) はここClassLoaderに文書化されています ...

JVM の標準クラス ローダーの代わりにドロップします。と組み合わせて使用​​して、JavaWrapper要求に応じてクラスを動的に変更/作成できます。

このクラスローダーは、特別なリクエストを異なる形式で認識します。つまり、リクエストされたクラスの名前に「$$BCEL$$createClass() 」が含まれている場合、その名前のメソッドを呼び出します( $$BCEL$$より前のすべてが、パッケージ名. クラスローダーをサブクラス化し、そのメソッドをオーバーライドできます. 「通常の」クラスのクラスmodifyClass()は、直前に呼び出されたメソッドをオーバーライドすることで変更できますdefineClass().

于 2012-09-09T07:34:21.573 に答える
1

パッケージ名の「bcel」の部分から判断すると、classloader はクラスをロードするだけでなく、その場でバイトコードを変更します ( bcelホームページを参照)。

編集: 彼らが何をするかについての詳細は、ここで見つけることができます: 「BCEL は、実行のために XSLT スタイルシートをバイトコードに「コンパイル」するために、XSLTC によって内部的に使用されます」

于 2012-09-09T07:32:47.780 に答える