java.lang.instrument

java.lang.instrumentパッケージをちょっと弄ったのでメモ

public static void premain(String agentArgs, Instrumentation inst) 

をもつエージェントクラスを用意する。

Premain-Class: クラス名

のエントリをもつ、manifest.mfを作る。

①と②で作ったやつを含めたjarを作る。

javaagentオプションをつけて実行。

java -javaagent:③で作ったjar 実行クラス
premainメソッドの中身

このメソッドを基点にバイトコードを弄る処理を入れる。
実際に弄るには、java.lang.instrument.ClassFileTransformerを実装して、premainの引数のInstrumentationにaddする。