问题标签 [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 上使用 Byte Buddy 时出错
我正在尝试在 Android 中使用Byte Buddy库,但出现错误:
java.lang.IllegalStateException:此 JVM 的版本字符串似乎无效:0
我还没有编码,只是:
在我的 App.java
我已经导入:
但它没有用,我尝试过:
但我仍然得到同样的错误。
编辑
我在初始化 ByteBuddy 之前放了这一行:
但现在我得到了另一个错误:
原因:java.lang.UnsupportedOperationException:无法加载此类文件。
对于此代码:
java - 改变 Java 中静态方法的行为 - 字节码操作
我正在尝试操作静态方法。为此,可以使用Byte Buddy或任何其他框架。
有一个名为Pi4J的库用于控制 Raspberry Pi 的 GPIO。这个库有一个方法叫做:
并且在我可能无法控制的程序的多个位置调用此调用,因此我需要修改调用。
我想做的是当GpioFactory.getInstance
以某种方式执行时检测并修改它们的方法,GpioController
以便它们记录它们已被调用。
也许唯一的解决方案是使用 AspectJ,但是您知道 Byte Buddy 是否可以成为解决方案吗?
java - Forwarding method calls with Byte Buddy
I'm trying to set up a class with Byte Buddy that implements all the interfaces of a given instance and forwards all calls to that instance, here's my code so far:
This results in an exception like this:
I can see the note under Forwarding
that for it to work the intercepted method must be defined on a super type of the given delegation target
but I'm not sure what that means. If that means I should be subclassing the generated class, what if my target is of a final
class? How else can I create a custom implementation that will forward these calls?
Also, since I'm here anyway, how can I specify a generic interface type to implement? Whether it's from a loaded java.lang.reflect.Type
or from something I want to create on the fly?
java - 无法使用 javaagent 为 spring boot uber jar 应用程序检测 apache httpclient
我正在尝试使用 Bytebuddy 编写一个 javaagent 来拦截 apache httpclient 请求,并且我想将此代理用于 spring boot 应用程序。当我从 Idea 启动我的测试 Spring Boot 应用程序时,代理工作正常(直接运行 main 方法)。但是,当我将应用程序打包到 spring boot uber jar 中并使用 运行它时java -javaagent:myagent.jar -jar myapplication.jar
,它会引发以下异常。
这是我的代理相关代码。
我认为这个问题是由 spring boot uber jar 引导应用程序的方式引起的。Spring boot 提供了一个专用的类加载器,名为 LaunchedURLClassLoader,用于从 uber jar 加载应用相关的类,而 javaagent jar 是默认加载系统类加载器(如果我的理解是正确的)。因此系统类加载器看不到 apache httpclient lib(包含在 uber jar 中)。
我尝试为 AgentBuilder 提供 BinaryLocator,但没有成功。也许 BinaryLocator 构造不正确。无论如何,一个合适的 BinaryLocator 可能是一个可能的解决方案。
非常感谢任何解决方案或建议。
其他信息可能会有所帮助:
spring-boot 版本 1.3.1.RELEASE byte-buddy 0.7.7,使用 maven-assembly-plugin 的 jar-with-dependencies 描述符
Ref apache httpclient 4.3.2
打包到代理中
java - 如何在 Java 中实现包装装饰器?
问题是创建现有对象的动态增强版本。
我无法修改对象的Class
. 相反,我必须:
- 子类化它
- 将现有对象包装在新对象中
Class
- 将所有原始方法调用委托给包装对象
- 实现由另一个接口定义的所有方法
添加到现有对象的接口是:
借助Byte Buddy,我设法继承并实现了我的接口。问题是对包装对象的委托。我发现这样做的唯一方法是使用太慢的反射(我的应用程序负载很重,性能很关键)。
到目前为止,我的代码是:
Node
子类/包装的对象在哪里。将NodeInterceptor
调用的方法转发到getNode
属性。
这里的代码NodeInterceptor
:
一切正常,但是拦截方法太慢了,我打算直接使用 ASM 来添加 Node 的每个方法的实现,但我希望使用 Byte Buddy 有更简单的方法。
java - 如何使用 Byte-Buddy 从接口构建 Java 类的具体实现?
我有一个界面,可以说它看起来像这样。
我想使用 ByteBuddy 实际构建这个对象的具体实现。
这是我尝试过的。
}
我收到这个错误
我做错了什么++ ..如果我想实现多个接口怎么办?
我将 ByteBuddy 用于代码生成目的。
java - 使用 Byte Buddy 的方法委托
我在获取一个使用 Byte Buddy 的简单示例时遇到问题,这是我的代码:
我希望工作并将调用转发到受人尊敬的拦截器实例,但是我得到了这个异常:
最奇怪的部分是在异常消息的最后:
我究竟做错了什么?
java - 将 ByteBuddy 与 AndroidAnnotations 一起使用
我正在尝试在基于 AndroidAnnotations 的项目中使用ByteBuddy。
我有一个具有一些注入依赖项MyService
的(AA)类:EBean
我想在执行这个类的任何方法之前记录一些东西,用@Log
.
我可以获得MyService
这种方式的新实例:
并且所有@Bean
依赖项都被注入。一切还好。
现在,使用 ByteBuddy,我需要创建一个动态子类来拦截带注释的方法:
我需要子类MyService_
而不是MyService
因为它使用Context
注入依赖项。如果我要子类化MyService
,repo
将永远是null
。
问题是自动生成的类MyService_
是final
,所以我不能子类化它。getInstance
方法是静态的,构造函数是私有的,但我可以通过反射获得一个实例,所以这不是问题。
任何想法?有人将 ByteBuddy 与 AndroidAnnotations 集成了吗?
我会很感激任何帮助,谢谢。
java - 使用 Byte Buddy 添加具有给定值的注释
如何使用 Byte Buddy 添加具有给定值的注释?
我正在为 JUnit 生成测试类,我想用@RunWith(SomeRunner.class)
.
java - Byte Buddy:为抽象类创建实现
我想在运行时使用 Byte Buddy 为抽象类创建一个实现,但我遇到了一个问题,即java.lang.AbstractMethodError
从创建的实例调用方法时会抛出 a 。我有一个像这样的现有abstract
类(我实际上无法修改它实际上包含更多逻辑):
使用以下最小示例,我希望我的Algorithm
实例返回一个常量值:
然而,这会导致以下异常:
(当我实验性地更改Algorithm
为时interface
,一切正常,但这并不能解决我的具体问题)。