Instrumentation#redefineClasses()の使用例
Bug ID: 6378425 Instrumentation.redefineClasses ignores class redefinition
Instrumentation#redefineClasses()がデグれってて動かないっていうバグレポート
みたいなんだけど、非常に簡易な使用例になっている。
Oracle Technology Network for Java Developers
これ、僕の以前の認識だとInstrumentationエージェント空間とユーザーコード空間を別々で考えていたので(アスペクトするんで互いに依存関係なし)
InstrumentationクラスはaddTransformer()はコールバックでクラスロード時に呼ばれるとしても
redefineClasses()は誰がいつ呼ぶのよ、と思い使い方がよくわからなかったんだけど
普通に連携してお好きなように自分で呼べばいいのか!なるほど〜。
日記
によると
ちなみに、SunのJDK5ではApache BCELが付属されていますが、
com.sun.org.apache.bcel.internal.*
あたりのパッケージで取得が可能です。
(でも、Javassistの方が早かったので、私は使っていません。)
とのこと。