Instrumentation
class was extended任意のモジュールの再定義を可能にする方法。それはあなたが追加モジュールを追加することができます読み込み、輸出、開き、サービスの使用法およびprovidings:
void redefineModule(Module module,
Set<Module> extraReads,
Map<String,Set<Module>> extraExports,
Map<String,Set<Module>> extraOpens,
Set<Class<?>> extraUses,
Map<Class<?>,List<Class<?>>> extraProvides);
また、ClassFileTransformer
APIは、変換時にJavaのModule
を登録するために拡張されました:
default byte[] transform(Module module,
ClassLoader loader,
String className,
Class<?> classBeingRedefined,
ProtectionDomain protectionDomain,
byte[] classfileBuffer)
throws IllegalClassFormatException;
このモジュール、インスツルメンテーションAPIと組み合わせることで、必要な調整が可能です。
現在、Javaエージェントはモジュール化を適用せずにクラスパスにロードされています。ただし、これはJava 9がまだ最終的なものではないため変更できます。
ありがとうございます。これは多くの助けとなりました。新しいredefineModule()メソッドを試してみました。必要な処理をしているようです – BradW