来自静态嵌套的代理 class

Agent from a static nested class

为什么无法从静态嵌套 class 创建代理? 我没有收到任何错误或任何错误,只是程序没有 运行,所以很难说哪里出了问题。

package sfjl;

import java.lang.instrument.Instrumentation;


public final class SFJL_Profiler {
     private SFJL_Profiler() {}

    
// 
static public final class SFJL_Profiler_Agent {

    private static Instrumentation instrumentation;

    public static void premain(String args, Instrumentation inst) {
        instrumentation = inst;
    }

    public static long sizeof(Object o) {
        return instrumentation.getObjectSize(o);
    }

}


// 
static public final class SFJL_Profiler_Console_Printer {
    
}


}

清单:

Manifest-Version: 1.0
Premain-Class: sfjl.SFJL_Profiler.SFJL_Profiler_Agent
Agent-Class: sfjl.SFJL_Profiler.SFJL_Profiler_Agent
Can-Redefine-Classes: true
Can-Retransform-Classes: true

这是一个正在运行的非嵌套代理:

由于是嵌套class,分隔符不是$.

sfjl.SFJL_Profiler$SFJL_Profiler_Agent

它工作正常,但 Agent-Class 的值(就此而言,Main-ClassPremain-Class 也是)采用 JVM 格式。所以,试试:

Agent-Class: sfjl.SFJL_Profiler$SFJL_Profiler_Agent

$ 在 JVM 语法中分隔内部 类,而不是点。