问题标签 [byte-buddy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 拦截所有Android Activity onCreate
一直在尝试将 android 与 byte-buddy 联系起来,但我的目标有问题;该目标是拦截 onCreate,然后将 Log.d(TAG, "Message") 添加到所有正在创建的活动中。
使用导入更新
第一个问题是似乎找不到类 Activity 。
编辑 java.lang.IllegalArgumentException: Cannot locate the class file for class he.herpa.autoloader.Activity using ClassFileLocator.ForClassLoader
第二个问题是,我是否走在正确的轨道上?
java - 如果代理类具有包私有默认构造函数,则代理实例化失败
使用 ByteBuddy,我想为具有包私有默认构造函数的类型创建代理。那是类型:
这就是我的代理创建和实例化代码:
所以我试图将公共默认构造函数添加到我的代理类型,拦截它的调用并委托给超类型构造函数。IllegalAccessException
虽然在生成的构造函数中失败了:
由于代理与代理类在同一个包中,我不清楚为什么该调用失败。我在这里做错了什么?是否有另一种方法可以让代理调用具有默认可见性的超级构造函数?
java - Javaagent Instrumentation Framework 的 JUnit 测试框架
为 Java 代理和仪器库的代码创建单元测试的标准方法是什么。我已经使用 Byte Buddy 框架创建了一个 Java 代理,用于在 Web 应用程序之上开发分析器,现在我想为这个代理编写 JUnit 测试用例。
java - 如何为新定义的字段分配默认值?
这是我第一次使用 ByteBuddy,我想动态创建一个java.lang.Object
只有一个名为myValue类型java.lang.String
的公共字段和默认值为“Hello World!”的子类。不幸的是,在调用 myClass.newInstance() 之后,该字段的值是null
(在 Eclipse 调试器中)。
我在这里错过了什么吗?
我正在使用 Eclipse Mars.2、Oracle JDK 1.7.0_75 和 ByteBuddy-1.2.3
java - ByteBuddy 中的非法接口类型
我正在从 ByteBuddy 0.6.15 升级到 1.2.3,并且出现“非法接口类型”异常。我设法将其归结为一小段代码:
在 0.6.15 中,这曾经可以工作,但在 1.2.3 中,我遇到了一个例外:见下文。
我不明白这个界面有什么非法之处,或者我需要改变什么才能让它工作。起初我以为可能是因为我没有对doSomething
方法做任何事情,但是当界面完全为空时,也会出现同样的错误。
java - 使用 Byte Buddy 重新转换类
Byte Buddy 是否能够Instrumentation#retransformClasses
已经加载?我想使用 Byte Buddy 的 Java 代理功能,这样我就不必指定-javaagent
能够检测类。例如,使用 Javassist 可以做到这一点。但我正在评估用 Byte Buddy 替换它。
我想在某些方法之前和之后插入一个静态方法调用。如果可能的话,一个简短的例子会很棒!
java - 如何使用代码生成跟踪 POJO 的状态
我们正在寻找一种以高性能方式跟踪客户端 POJO 实例状态的解决方案。我们期望的是:每次对 POJO 进行更改时,都会使用 setter 来创建此状态。我们创建了一个基于 OGNL 的监视/事件总线,当进行更改时,我们将正确地发送OgnlChangeEvent
到我们的事件总线。
到目前为止,我们研究了 AspectJ / cglib / object graph Diff 解决方案,但它们都占用了太多的 CPU 时间。我们当前的解决方案基于 Spring ,每次调用 Getter 方法时都会MethodInterceptor
创建一个新实例。Proxy
在这一点上,我们开始研究代码生成解决方案,我们偶然发现了 Byte Buddy。这个方向是正确的方法吗?我们能否生成一个新Class
的扩展我们的客户端 POJO 状态并通知它的 OGNL 前缀,直到调用 setter 方法?
java - Bytebuddy 拦截异常抛出
我想拦截异常抛出并使用 bytebuddy 记录它。可能吗?如果不是,还有什么其他工具可以让我这样做?
java - ByteBuddy:如何实现字段访问拦截器?
我正在尝试制作一个 OGM 将对象转换为 OrientDB 的顶点。目前我正在使用 GCLib,但我读到 ByteBuddy 可以实现两个关键的事情,如果有效,它将提高 OGM 速度。
ByteBuddy 可以实现字段访问控制吗?我阅读了文档,但不清楚或者我不明白。
动态添加默认的空构造函数。
当前的问题是:我们不知道将作为参数传递的类定义。想法是重新定义类并实现空构造函数(如果没有),添加一个名为 __BB__Dirty 的字段以在检测到分配操作时将对象设置为脏,并强制接口的实现与对象对话。
示例:一个泛型类:
现在我们有一个这样的界面:
因此,我想强制 Example 类实现接口、方法 isDirty()、要处理的字段和默认构造函数,因此该类应转换为:
还有一些神奇的分配器,因此如果修改了任何字段(__BB__dirty 除外),__BB__dirty 字段将设置为 True;
我已经尝试了这个的第一部分,但我失败了:(
但我得到这个错误:
我被困在解决BB问题的第一阶段。谢谢
java - 字段编写器拦截器
我正在研究 Byte Buddy,我正在尝试用它替换 CGLib。我想知道是否有一种方法可以实现拦截对任何字段的写入。我不知道字段类型,也不想更改分配的值。我只想登录field written!
任何访问权限。
示例:如果我有这个课程:
稍后当我这样做时:
它应该输出:
在Custom Instrumentation下的帮助页面中,有一个示例,但不清楚。