Instrumentation
class was extended带有允许重新定义任何模块的方法。它允许你添加额外的模块读取,出口,打开后,服务的用途和提供中:
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