问题标签 [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 - 如何让 ByteBuddy 创建的子接口继承类型注解?
我有这个伪测试来创建一个子接口,我想从接口 S 复制注释,但它不起作用。我究竟做错了什么?
java - 使用 ByteBuddy 对方法内的对象进行计数的代理
我正在寻找一种方法来计算在使用 ByteBuddy 进行字节码分析的方法中调用了多少不同的对象。我用字符串解析试过这个,但这绝对不可能。此外,我已经检查了 AST,但我应该在这样做之前构建代码,这将是很多时间。这样,如果我可以创建一个代理,那将是更可取的。
给定以下代码:
此方法的分析输出为:(myObj, myObj2)。由于我是 JavaBuddy 的新手,因此我的处理方法是:
创建一个元素匹配器,它将查找带有 @Test 注释的方法。拦截它....这是问题所在:我不知道应该如何计算这些对象或遍历方法语句。
谁能给我一些关于它的链接或样本?
java - 在 Byte Buddy 中设置 instanceField
我试图弄清楚如何使用 Byte Buddy 设置实例字段的值。文档说:
在调用此类动态类的实例的方法之前,请始终记住为该字段分配一个值。否则,方法委托将导致 NullPointerException。
但是我在文档或单元测试中看不到如何做到这一点。
我的动态课程是:
我看到另一个帖子的答案是拦截任何构造函数并@FieldProxy
与 a 一起使用,MethodDelegation
但我不知道该怎么做。我在结果方面所做的一切尝试都会导致结果的一些变化.constructor(ElementMatchers.any()).intercept(...)
:
java.lang.IllegalArgumentException: [] 中的任何一个都不允许来自...的委派
java - Gson 类中的验证错误
我使用以下代码重新定义一个类:
加载类时class com.google.gson.internal.ConstructorConstructor
它通过构造函数直到最终到达com.google.gson.internal.LinkedTreeMap
.
在初始化期间,我得到了一个 VerifyError:
作为参考,拦截器基本上只是手动检查包私有访问(因为包私有方法被公开),然后只调用superCall.call()
. 我不相信问题出在那儿。
有任何想法吗?
编辑:这是PackagePrivateInterceptor
:公共类 PackagePrivateInterceptor {
EDIT2:以下代码不会触发问题:
但以下是:
javassist - 如何将输入的用户表达式动态转换为java代码?
我阅读了 byte buddy 和 javassist 文档,我想不知道是否可以转换如下字符串:
到
正则表达式可以将表达式捕获为:
- 转换
get foos
为getFoos()
- 从
Foo
类中检查name
字段是否存在 - 如果字段
name
不是Number.class
转换==
为的实例.equals
- 表达
- 循环并打印结果
我读了一些例子却找不到这样的东西。所以我来这里取你的光。谢谢
java - 拦截来自特定命名空间的所有方法/构造器/getter/setter
我有一个这样实现的 Java 代理:
然后转换类:
和一个拦截器:
这样做的问题是它不拦截构造函数,它也会给出这种错误
无法为接口类型定义非公共或非虚拟方法“lambda$static$1”
什么是制作拦截器的最佳方法,它将代理某个域中的类中的每个方法(我希望能够获取方法名称,检查方法参数(如果有的话)并且只是转发执行)。
java - 将参数传递给 bytebuddy 拦截器
我有一个使用 Byte Buddy 的拦截器,我想将一个参数传递给拦截器。我怎样才能做到这一点?
中的拦截方法MethodInterceptor
是:
如何expressionHandler
将构建器传递给拦截器方法?
java - 使用 Byte-Buddy 的 Java 代理不起作用
我需要你的帮助来找出我的实施有什么问题......
我正在尝试使用 byte-buddy 实现一个简单的 JVM 运行时分析器。一般来说,我需要的是每个方法调用都将记录在一个堆栈中,我在一个单独的对象中管理该堆栈。
在阅读了几篇文章后,我了解到最好使用“Advise”方法而不是“MethodDelegation”,这就是我得出的结论:
代理.java:
和 ProfilingAdvice.java:
出于某种原因,ProfilingAdvice 类中的“进入”和“退出”方法根本没有被调用。
我究竟做错了什么 ?
谢谢,埃拉德。
java - ByteBuddy:java.lang.IllegalArgumentException:无法附加未定义的变量:V
当com.google.common.collect.ImmutableMultimap$Values
从 Google Guava 重新定义类时,我从 ByteBuddy 得到一个 IllegalArgumentException。
内部类是com.google.common.collect.ImmutableCollection
其方法ImmutableList<E> createAsList()
导致问题的子类。
堆栈跟踪:
我在这里创建了一个触发问题的示例:https ://github.com/erikhakansson/bytebuddytest 该测试是根据我之前的测试修改的,因此那里可能有一些垃圾。
要进行测试,只需运行 mvn clean install 然后运行生成的 jar。
很可能,我做错了什么,但我不知道是什么,所以请帮忙!:)
java - 使用 ByteBuddy 子类化一个类会导致一个没有任何声明方法的类
我在这里遗漏了一些明显的东西,但是当我使用 ByteBuddy 子类化一个类时,我看不到声明的方法。
结果:
现在使用 ByteBuddy:
结果: