首页 > 解决方案 > 类未传递给 ClassFileTransformer

问题描述

我一直在开发一个 Java 代理来监控我们的 Web 应用程序。我正在使用 -javaagent 参数向 JVM 添加代理。在测试过程中,我发现某些类没有传递给 ClassFileTransformer,因为它的内部类被传递给了实现。

public byte[] transform(ClassLoader loader, 
                        String className, 
                        Class<?> classBeingRedefined, 
                        ProtectionDomain protectionDomain,
                        byte[] classfileBuffer) {

        logger.info("Loaded class: " + className);
        return null;
    }

为调试添加了上述实现。加载实现为的类 A 时

package x.y.z;
abstract class A {
    static enum Aa {
        ...
    }

    static enum Ab {
        ...
    }
    ....
}

调试日志打印是

加载类:xyzA$Aa
加载类:xyzA$Ab

我找不到任何原因,为什么 xyzA 类没有打印 谁能帮我理解这个问题?

标签: javainstrumentationjavaagents

解决方案


推荐阅读