Java 类未传递给ClassFileTransformer
我一直在开发一个java代理来监控我们的web应用程序。我使用-javaagent参数向JVM添加代理。在测试过程中,我发现某些类没有传递给ClassFileTransformer,而它的内部类则传递给实现Java 类未传递给ClassFileTransformer,java,instrumentation,javaagents,Java,Instrumentation,Javaagents,我一直在开发一个java代理来监控我们的web应用程序。我使用-javaagent参数向JVM添加代理。在测试过程中,我发现某些类没有传递给ClassFileTransformer,而它的内部类则传递给实现 public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined
public byte[] transform(ClassLoader loader,
String className,
Class<?> classBeingRedefined,
ProtectionDomain protectionDomain,
byte[] classfileBuffer) {
logger.info("Loaded class: " + className);
return null;
}
调试日志打印是
加载类:x.y.z.A$Aa加载类:x.y.z.A$Ab
我找不到任何原因,为什么x.y.z.A类没有打印。有人能帮我理解这个问题吗?我无法分析那些不连贯的代码片段。我看到一个
transform
方法和一个潜在的目标类,但是代理实现和transform
周围的类在哪里?我看不出变压器是如何初始化的,在哪里初始化的。显然你的问题在于你没有显示的代码。它甚至可能在您的…
部分中。请学习什么是A,并以这种方式提问。你帮助别人,最终帮助自己,因为你得到的答案不仅仅是猜测。非常感谢。请告诉我们如何加载A
。或者在您希望加载它的位置。使用verbose类加载(-verbose:class
)运行VM以查看何时加载它。也许只有在你的变压器连接好之后?也许一点也不?我无法分析那些不连贯的代码片段。我看到一个transform
方法和一个潜在的目标类,但是代理实现和transform
周围的类在哪里?我看不出变压器是如何初始化的,在哪里初始化的。显然你的问题在于你没有显示的代码。它甚至可能在您的…
部分中。请学习什么是A,并以这种方式提问。你帮助别人,最终帮助自己,因为你得到的答案不仅仅是猜测。非常感谢。请告诉我们如何加载A
。或者在您希望加载它的位置。使用verbose类加载(-verbose:class
)运行VM以查看何时加载它。也许只有在你的变压器连接好之后?也许一点也不?
package x.y.z;
abstract class A {
static enum Aa {
...
}
static enum Ab {
...
}
....
}