最新的 Byteman 文档 (4.0.16) 提到了内部类,但没有提到 lambda。我的规则如下:
RULE showdir
CLASS ReportService
METHOD lambda$retrieveReport$0
AT ENTRY
IF TRUE
DO System.out.println("XXXXXXXX");
ENDRULE
但是它似乎永远不会触发。当我在没有参数的情况下运行 bmsubmit 时,它显示了规则但没有提到触发方法。我用javap检查了方法名,是正确的。我可以触发此类的其他非 lambda 方法。我在 Alpine Linux 上运行 AdoptOpenJdk 8。
Byteman 支持 lambda 吗?我是否需要执行其他操作才能触发规则?
最佳答案
嗯,从 javap 反编译中获取实现 lambda 主体的方法的名称是识别目标方法的巧妙技巧。我不确定为什么 Byteman 无法注入(inject) coe。你能通过 Byteman JIRA 实例报告这个吗?我将调查并在 JIRA 上报告结果。实际上可能使这项工作成为可能。
关于java - byteman 可以在 lambda 上触发规则吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68524466/