読者です 読者をやめる 読者になる 読者になる

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の方が早かったので、私は使っていません。)

とのこと。