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/

10-10 12:27