在 ByteBuddy Advice 类中重新映射

问题描述

ByteBuddy 有 net.bytebuddy.jar.asm.commons.Remapper 允许例如运行时着色通过使用类加载器在加载期间转换和重新映射类。但是我在 ByteBuddy Advice 类中重新映射类型引用时遇到问题。我认为这是因为 BB 实际上并没有将它们作为类加载,而只是使用 getResourceAsstream 或类似的东西来获取 Advice文件的字节数组。

那么,问题是:我如何为 Remapper 类提供 Advice

解决方法

您考虑过定位建议类吗?您可以提供类型为 ClassFileLocator 的可选参数,该参数负责为给定类查找类文件。您需要查找具有不同名称的 .class 文件或编写一个委托程序来调整类名,然后再传递给不同的类文件定位器。