誰もが知っているJrebel。しかし、私はいくつかの小さな同様の実装を作りたかったのです - 再コンパイル後にクラス定義をリロードできる機能だけです。
クラスを監視するJavaエージェントを作りました。また、すべてのカスタム クラスをロードするシステム クラスローダーを指定します。再コンパイル後、エージェントは新しい定義でクラスをリロードする必要があります。しかし、何も起こりません。
また、Javaエージェント内でインストルメンテーションAPIを使用しようとしました:
instrumentation.redefineClasses
また
instrumentation.retransformClasses
しかし、それは役に立ちません。
すべてのソース ファイルはここにあります - https://github.com/ice-pro/Runtime-Redeploy
テストを実行するには、メイン モジュールで「インストール」を実行してから、テスター モジュールで「コンパイル」を実行してください。
実行時にクラス宣言を再定義する方法を教えてください。