Java工具中Transformer的主要目的是什么。我知道它们将与检测实例一起添加。同样在premain方法中,在agentArgs
中将哪些参数分配给public static void premain(String agentArgs, Instrumentation inst);
最佳答案
转换程序(java.lang.instrument.ClassFileTransformer)用于在字节文件级别上转换类文件之前,将它们加载到Java虚拟机中。该功能可用于在字节级别上修改方法(实际上,您得到一个字节数组),或者通过使用Javassist或ASM等第三方库(其中Javassist位于较高的修改层上)(您可以提供已编译的源代码)在运行期间)。 ASM与bytecode关键字(即invokevirtual
)一起使用。
在流行的框架(如AspectJ)中使用在加载期间修改类及其条目的方法来加载方面(即所谓的“加载时间编织”)。agentArgs
方法中的premain(...)
参数是String
,其中包含在启动时提供给代理的参数。它是单个String
,应由代理程序本身进行解析。
您可以像这样为代理商提供一个:
$ java -javaagent:${jarfile}=${agentArgs}
输入为
${agentArgs}
的值将是agentArgs
参数的值。如果仅包含一个参数,为什么将其称为
args
?只有天知道。关于java - Java工具中的Transformer,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36460854/