关于javaagent拦截不到File类的问题

main类:

Java code
 
?
1
2
3
4
public static void main(String[] args) {
        File file = new File("e:\\3.txt");
        System.out.println(file.getName());
    }


premain类:

Java code
 
?
1
2
3
4
public static void premain(String agentArs, Instrumentation inst) throws IOException {
        // 初始化配置
        inst.addTransformer(new ThunisoftClassFileTransformer());
    }


转换器类:

Java code
 
?
1
2
3
4
5
6
7
public byte[] transform(ClassLoader loader, String className,
            Class<?> classBeingRedefined, ProtectionDomain protectionDomain,
            byte[] classfileBuffer) throws IllegalClassFormatException {
        className = className.replace('/''.'); 
        System.out.println(className);
        return null;
}



拦截什么都不干,只是输出拦截到的类,执行结果只能拦截到以下类,为什么拦截不到File类???贴图有点问题,我就直接贴运行结果了。求大神解答啊,这个拦截的类到底是怎么定义的,是拦截哪些类啊,为什么会没有File类?
java.lang.invoke.Method
java.lang.invoke.Method
java.lang.invoke.Method
java.util.function.Func
java.lang.invoke.Method
java.lang.invoke.Method
java.lang.ClassValue
java.lang.ClassValue$En
java.lang.ClassValue$Id
java.lang.ClassValue$Ve
java.lang.invoke.Member
java.lang.invoke.Method
java.lang.invoke.Method
sun.misc.PostVMInitHook
sun.usagetracker.UsageT
java.util.concurrent.at
sun.usagetracker.UsageT
sun.usagetracker.UsageT
sun.usagetracker.UsageT
java.lang.ProcessEnviro
java.lang.ProcessEnviro
java.lang.ProcessEnviro
java.util.Collections$U
java.lang.ProcessEnviro
java.util.HashMap$Entry
java.lang.ProcessEnviro
java.util.HashMap$Entry
java.lang.ProcessEnviro
sun.usagetracker.UsageT
java.io.FileOutputStrea
sun.launcher.LauncherHe
hello.IOTest
sun.launcher.LauncherHe
3.txt
sun.misc.Signal$1
java.lang.Shutdown
java.lang.Shutdown$Lock

posted on 2017-02-21 17:24  让编程成为一种习惯  阅读(467)  评论(0编辑  收藏  举报