Java 仪器中的变压器
Transformer in Java instrumentation
Transformer 在 java 检测中的主要用途是什么。我知道它们将与检测实例一起添加。还有premain方法中,agentArgs
in public static void premain(String agentArgs, Instrumentation inst);
赋值什么参数
变形金刚 (java.lang.instrument.ClassFileTransformer) 用于在将 class 文件加载到 Java 虚拟机之前在字节码级别上转换它们。该功能可用于修改字节级别的方法(实际上,您得到一个字节数组)或使用第三方库,如 Javassist 或 ASM,其中 Javassist 进行了更高的修改层(您可以提供在运行时编译的源代码)。 ASM 使用字节码关键字(即 invokevirtual
)。
在加载期间修改 classes 及其条目用于流行的框架,如 AspectJ 以提供加载方面的能力(即所谓的 "loadtime-weaving")。
premain(...)
方法中的 agentArgs
参数是一个 String
,其中包含在启动时提供给代理的参数。它是一个单一的 String
,应由代理本身解析。
您可以像这样为代理提供一个:
$ java -javaagent:${jarfile}=${agentArgs}
您作为 ${agentArgs}
输入的值将是 agentArgs
参数的值。
如果它只有一个参数,为什么叫 args
?只有天知道。
Transformer 在 java 检测中的主要用途是什么。我知道它们将与检测实例一起添加。还有premain方法中,agentArgs
in public static void premain(String agentArgs, Instrumentation inst);
变形金刚 (java.lang.instrument.ClassFileTransformer) 用于在将 class 文件加载到 Java 虚拟机之前在字节码级别上转换它们。该功能可用于修改字节级别的方法(实际上,您得到一个字节数组)或使用第三方库,如 Javassist 或 ASM,其中 Javassist 进行了更高的修改层(您可以提供在运行时编译的源代码)。 ASM 使用字节码关键字(即 invokevirtual
)。
在加载期间修改 classes 及其条目用于流行的框架,如 AspectJ 以提供加载方面的能力(即所谓的 "loadtime-weaving")。
premain(...)
方法中的 agentArgs
参数是一个 String
,其中包含在启动时提供给代理的参数。它是一个单一的 String
,应由代理本身解析。
您可以像这样为代理提供一个:
$ java -javaagent:${jarfile}=${agentArgs}
您作为 ${agentArgs}
输入的值将是 agentArgs
参数的值。
如果它只有一个参数,为什么叫 args
?只有天知道。