当我尝试查找使用Javaagent的示例时,大多数情况下都是与字节码一起使用的示例。这些示例使用第三方库,例如Javaassist。
据我所知,在Java中没有标准手段来处理字节码,在任何情况下都必须使用库。
因此,我尝试在调用defineClass()之前在自己的自定义类加载器中使用这些库。当然,它完美地工作了。我可以像使用ClassFileTransformer的transform()方法一样更改字节码。
我是否正确理解了Javaagent的另一个有用功能,而这反过来又是它们的主要特点?因为首先,javaagent会给您提供一个Instrumentation对象,而Java规范说instrument包主要用于处理字节码。但是,如果我只能实现自己的类加载器(在引入instrument包之前就可以做到的事情),那我为什么需要这样做呢?
据我所知,在Java中没有标准手段来处理字节码,在任何情况下都必须使用库。
因此,我尝试在调用defineClass()之前在自己的自定义类加载器中使用这些库。当然,它完美地工作了。我可以像使用ClassFileTransformer的transform()方法一样更改字节码。
我是否正确理解了Javaagent的另一个有用功能,而这反过来又是它们的主要特点?因为首先,javaagent会给您提供一个Instrumentation对象,而Java规范说instrument包主要用于处理字节码。但是,如果我只能实现自己的类加载器(在引入instrument包之前就可以做到的事情),那我为什么需要这样做呢?