byte-buddy 相关问题

Byte Buddy是一个代码生成和操作库,用于在Java应用程序的运行时期间创建和修改Java类,而无需编译器的帮助。 Byte Buddy允许创建任意类,并且不限于实现用于创建运行时代理的接口。此外,Byte Buddy提供了一个方便的API,可以手动,使用Java代理或在构建期间更改类。

相当于cglib 的Enhancer.isEnhanced 的字节伙伴是什么?

我正在将一些代码从 cglib 转换为 byte buddy。 目前的代码有这样的语句: if (net.sf.cglib.proxy.Factory.class.isAssignableFrom(entityClass) || net.sf.cglib.proxy.Enhancer.isEnhanced(

回答 1 投票 0

引起:java.lang.NoSuchMethodException:org.hibernate.bytecode.internal.bytebuddy.BytecodeProviderImpl.<init>()

尝试使用 GraalVM 和 Spring Boot 创建本机映像。当我使用 mvn spring-boot:run 命令时,应用程序本身可以工作,但是当我构建本机映像并尝试运行它时,我得到了这个除了...

回答 1 投票 0

是否可以使用@Advice.OnMethodEnter从方法返回?

使用 Byte Buddy 的建议 API,是否可以从检测的方法返回而不实际执行它? 一种用例是实现缓存并返回缓存的值,如果...

回答 1 投票 0

如何修改java中的核心api?

例如:我想在非生产环境下更改 LocalDateTime.now() 返回结果, 我尝试调用以下代码,但出现错误: @测试 公共无效测试3(){ ...

回答 1 投票 0

无法通过Byte Buddy代理拦截方法调用

我想通过字节伙伴拦截方法调用来进行一些日志记录。我已经可以进行编译时字节码增强工作,但是我没有运气设置相同的东西,但是有一个...

回答 1 投票 0

如何在没有罐子的情况下附着药剂?

(使用Java 11) 我可以在运行时用 jar 注入代理,通过: 虚拟机 jvm = VirtualMachine.attach(jvmPid); jvm.loadAgent("/path/to/agent.jar"); jvm.detach(); 有什么办法可以...

回答 2 投票 0

可以在onTransformation方法中替换new byte[]吗?

我想在bytebuddy工具AgentBuilder.Listener的onTransformation()方法中使用jacoco的instrument()来替换新的byte[]文件。如何让byte buddy加载这个替换后的byte[]文件呢? @

回答 1 投票 0

ByteBuddy 在 Aspect 中初始化非原始字段

为了监控和程序分析,我目前正在尝试将 AspectJ 实现转换为一个 ByteBuddy 和一个 javassist 实现。原始的 AspectJ 实现在这里:http...

回答 1 投票 0

无法将方法传递给字节伙伴中的建议

参考: 从 AspectJ 迁移到 Byte Buddy 插件时出现问题 当我遵循该示例,但按应有的方式更新它时: 封装插件; 导入java.lang.reflect.Method; 导入net.bytebuddy.asm。

回答 1 投票 0

无法传递方法以在字节伙伴中提供建议

参考: 从 AspectJ 迁移到 Byte Buddy 插件时出现问题 当我遵循该示例,但按应有的方式更新它时: 封装插件; 导入java.lang.reflect.Method; 导入net.bytebuddy.asm。

回答 1 投票 0

如何覆盖传递依赖版本?

最近,我升级到Java 21并在构建过程中注意到这个错误 未能提高班级...: 当前版本的 Byte Buddy 不支持 Java 21 (65) 正式支持Jav...

回答 2 投票 0

覆盖 POM.xml 中的第 4 方依赖项

最近我升级到Java 21并在构建过程中注意到这个错误 无法增强类...:当前版本的 Byte Buddy 不支持 Java 21 (65),该版本正式支持 Java 20 ...

回答 1 投票 0

无法拦截Java 17中java.net.HttpURLConnection类的方法

我想拦截java.net.HttpURLConnection的connect()方法。为此,我正在使用下面提供的代码。提供的代码拦截Ja中HttpURLConnection类的connect方法...

回答 1 投票 0

如何让 ByteBuddy 构建类实现并初始化成员变量?

我进行了广泛的搜索但没有成功,并且在示例中找不到答案。 与以下成员一起上课: 公共类 Foo { 公共字符串名称; 公众年纪大了...

回答 2 投票 0

如何使用 bytebuddy 跟踪对象更改?

我正在尝试编写类似于工作单元的东西来跟踪更改,尽管它非常特定于某些生成的代码。 我有以下 ByteBuddy 代码 私人课程 我正在尝试编写类似于工作单元的东西来跟踪更改,尽管它非常特定于某些生成的代码。 我有以下 ByteBuddy 代码 private Class<? extends Group> getTrackedClass(GroupChangeTrackingProxy trackingProxy) { return new ByteBuddy() .subclass(Group.class) .method(ElementMatchers.isSetter()) .intercept(InvocationHandlerAdapter.of(new GroupChangeTrackingProxy())) .make() .load(CustomerPlatformGroupsRepositoryImpl.class.getClassLoader()) .getLoaded(); } public class GroupChangeTrackingProxy implements InvocationHandler { private final Logger log = LogManager.getLogger(GroupChangeTrackingProxy.class); private final GroupModifications target = new GroupModifications(); private final AtomicBoolean tracking = new AtomicBoolean(false); public GroupModifications getTarget() { return target; } public void setTrack(boolean bool) { this.tracking.setPlain(bool); } @Override public Object invoke(Object proxy, Method method, Object[] args) { if (tracking.get()) { var match = ReflectionUtils.findMethod(GroupModifications.class, method.getName()); if (match != null) { ReflectionUtils.invokeMethod(match, target, args); log.debug( "tracking: '{}.{}({})'", () -> proxy.getClass().getSimpleName(), method::getName, () -> args); } } // RECURSIVE!!!! ReflectionUtils.invokeMethod(method, proxy, args); return null; // should be void methods anyways } } 我们必须将返回的信息复制到我们跟踪的代理中,然后开始跟踪 private Group track(Group value) { var tracker = new GroupChangeTrackingProxy(); var clazz = getTrackedClass(tracker); var tracked = createInstanceOf(clazz); this.copier.copy(value, tracked); tracker.setTrack(true); return tracked; } 这个实现的问题是它最终是一个递归调用。我可以避免使用 spring ReflectionUtils 和 InvocationHandler,但我找不到从 Byte Buddy 获取方法名称的方法。 如何在没有递归问题的情况下做到这一点? 我在这个问题中找到了答案。 本质上就是这些注释 public void invoke( @This Object proxy, @SuperMethod Method method, @AllArguments Object[] args) 然后更改 bytebuddy 的设置方式 .intercept(MethodDelegation.to(new GroupChangeTrackingProxy()))

回答 1 投票 0

ByteBuddy - 如何保存Java源代码?

用ByteBuddy保存.class文件似乎很常见 显示生成的bytebuddy字节码 是否也可以以某种方式保存 Java 源代码(.java 文件)? 我发现 saveIn(...

回答 1 投票 0

使用 Byte Buddy 更改 Android 中的方法实现

我想要Android SDK的Resources类的一些方法的实现,例如getString()使用我自己的实现。 我无法创建自己的覆盖/代理版本的资源,因为我...

回答 1 投票 0

Byte Buddy:动态字段值

我正在与字节伙伴合作,我想获取我拦截的类中所有私有字段的值。 我知道我可以做这样的事情 公共静态布尔拦截(@Advice.FieldValue(...

回答 1 投票 0

Mockmaker 异常 - 无法初始化内联 Byte Buddy 模拟制作者

我的项目使用以下mockito依赖项。仅当我添加公司的内部依赖项时,我才面临以下问题。如何修复它?我已经尝试确保我的 Intellij dea 正在使用 J...

回答 2 投票 0

使用 bytebuddy 实现方法检测

我们正在尝试构建一个 javaagent,用于使用 ByteBuddy 来检测类。我们有一个 javassist 实现,它不能很好地与 Mockito 配合使用,因此转向 ByteBuddy

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.