【发布时间】:2013-09-23 14:43:10
【问题描述】:
当我尝试查找使用 Javaagent 的示例时,在大多数情况下,它们都是使用字节码的示例。这些示例使用第三方库,例如 Javaassist。
据我所知,Java 中没有使用字节码的标准方法,无论如何您都必须求助于库。
所以,在调用defineClass() 之前,我尝试在我自己的自定义类加载器中使用这些库。而且,当然,它运行得非常好。我可以用同样的方式改变字节码,就好像我会用ClassFileTransformer的transform()方法一样。
我是否正确理解 javaagents 的另一个有用特性,而这又是它们的主要特性?因为,首先,javaagent 给你一个Instrumentation 对象,而Java 规范说instrument 包主要用于处理字节码。但是,如果我可以实现自己的类加载器(早在引入 instrument 包之前我就可以做的事情),我为什么需要这样做?
【问题讨论】:
标签: java bytecode javaagents