获取ByteBuddy的执行路径

问题描述:

我试图获取应用程序的执行路径。为了与ByteBuddy保持联系,我使用下面的代码实现了一个代理,但它不打印任何东西。谁能帮我?获取ByteBuddy的执行路径

public static void premain(String arg, Instrumentation inst) throws Exception { 

     new AgentBuilder.Default() 
       .type(ElementMatchers.nameContains("Application")) 
       .transform(new AgentBuilder.Transformer() { 
        @Override 
        public DynamicType.Builder<?> transform(DynamicType.Builder<?> builder, TypeDescription typeDescription, ClassLoader classLoader, JavaModule javaModule) { 
         return builder.method(ElementMatchers.any()).intercept(MethodDelegation.to(LogInterceptor.class)); 
        } 
       }) 
       .installOn(inst); 

} 

public static class LogInterceptor { 
static void log(@Origin Method method) { 
     System.out.println(method.toString() + " was called"); 
    } 
} 

我假设你的类不能调用package-private方法。因此,Byte Buddy拒绝了该仪器。如果您向代理构建器安装侦听器,则可以截获此错误。

您可能还想在打印后调用原始代码。您可以使用SuperMethodCall添加andThen来执行此操作。