Javaagent不打印

时间:2018-04-02 15:35:45

标签: java javassist javaagents

我正在使用Javassist。 这是我的代码:

public class JavaAgent {
        public static void premain(String args, Instrumentation inst) {
            inst.addTransformer((ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) -> {
                if(className.endsWith("javafx/stage/Stage")) {
                    System.out.println(1);
                    ClassPool classPool = ClassPool.getDefault();
                    System.out.println(2);
                }
                return null;
            });
        }
    }

我发现有一种奇怪的情况,我的输出是:

  

1

为什么?

编辑:

为了确保这不是一个例外问题,我添加了捕手,就像这样:

    if(className.endsWith("javafx/stage/Stage")) {
        try {
            System.out.println(1);
            ClassPool classPool = ClassPool.getDefault();
            System.out.println(2);
        } catch (Exception e) {
            System.out.println("EX!");
        }
    }

输出仍然相同。

1 个答案:

答案 0 :(得分:0)

问题解决了。我忘了将JavaAgent的lib文件夹与JavaAgent.jar一起复制。

奇怪的是,除非我宣布

,否则没有异常信息
ClassPool classPool = ClassPool.getDefault();

在premain()函数之外。