cost 100 ms
Java ASM:错误的局部变量类型 (dload) 类型 top(当前帧,locals[5])不可分配给 double - Java ASM: Bad local variable type (dload) Type top (current frame, locals[5]) is not assignable to double

我正在尝试使用 Java Asm 库生成 Java 字节码(我基本上是在尝试创建另一种 JVM 编程语言) 这是我正在编译的代码 如您所见,语法与 Java 非常相似println只是对System.out.println的调用。 当我使用我的编译器时,它会生成以下代码(使用 javap 得到这个 ...

将 testInstrumentationRunner 与派生自编译时不可用的类的运行器交换 - Exchange testInstrumentationRunner with a runner derived from class not available at compile time

我想使用自定义testInstrumentationRunner来覆盖newInstance方法,以便使用自定义应用程序: 实际上需要该应用程序才能使测试执行工作(因为它在启动时跳过了一些 GDPR 对话框等): 如您所见,我需要从AllureAndroidJUnitRunner TestJ ...

MethodVisitor ASM 中的 visitMethod 不访问 Scala 中的方法 - visitMethod in MethodVisitor ASM not visiting method in Scala

我正在构建一个应该使用 ASM 库操作字节码的 Java 代理。 我需要在具体方法的开头添加说明。 我设法通过创建以下代理来做到这一点: 无论如何,这与 Java 完美配合,但我在 Scala 中有一些奇怪的问题。 如果我在 Scala 中有以下代码,一切正常,我会从move方法中收到一条 ...

在哪里可以找到 pyc 字节码结构信息 - Where to find pyc bytecode structure information

我正在尝试为 .pyc 文件制作解码器,并且需要弄清楚结构是如何的。 我找到了几个建议,但它们都使用 marshal 模块加载代码然后反汇编它。 我发现了一些对一般结构的简单解释,这些解释使我构建了一个简单的反编译器。 最好的帖子是: 如何在 python 中创建代码对象? 但是,我需要更直接 ...

使用字节码操作访问生成的代码 - Accessing the generated code with bytecode manipulation

我目前正在处理 Java 库,我想使用字节码操作添加一些public static final String字段,这些字段只包含有关实体的一些信息。 例如Customer.TABLE_NAME 。 我希望能够在编译时间之前访问这些字段,同时编写类似于 lombok 允许您执行的代码。 显然,在编译代 ...

如何使用 Javassist 生成循环字节码? - How to generate looping bytecode using Javassist?

我正在尝试为一种编译为 Java 字节码的深奥编程语言编写编译器。 我正在尝试使用 Javassist 生成字节码。 我在尝试生成分支/循环代码时卡住了。 例如,假设我正在为以下内容生成代码: 这是我的尝试: 通过检查 class 文件,我可以看到生成了预期的字节码: 但是,当使用java Mai ...

不兼容的魔法值 0 ASM - Incompatible magic value 0 ASM

我有一个 .class 文件,该文件是使用 ASM 核心 API 按以下方式生成的: 最后的方法只是检查目录并将.class文件写入其中。 稍后当我想向我正在使用的 class 添加一些东西时: 当我尝试使用 ClassLoader 读取 Class 时出现问题: 上面的代码给出了一个错误: 但是 ...

Java 模块系统是否因合成字段而损坏? - Is Java module system broken for synthetic fields?

我正在使用 java 模块系统测试一些字节码生成库。 我编译了 java 11,对 java.base module-info.java 进行了以下更改: 然后我使用“--illegal-access=deny”选项启动 java。 当我将这个已编译的 java 版本与 javassist 库一起 ...

编辑Java ASM字节码中try-catch的finally块 - Editing the finally block of try-catch in Java ASM bytecode

我有一个 java class,我想在每个 finally 块中添加一些自定义指令。 我试过使用 Java ASM 库。 我尝试迭代每个方法,然后迭代每个 TryCatchBlockNode 并获取句柄 label 并在其中插入指令。 如何在每个 finally 块中插入一些自定义代码? 编辑:上面 ...

如何将 InvokeDynamic 作为参数传递给 ByteBuddy 中的 MethodCall - How to pass InvokeDynamic as parameter to MethodCall in ByteBuddy

我想生成 class 的字节码,它将方法引用作为参数传递给另一个方法。 例如: 使用 ByteBuddy 我可以使用自定义构造函数生成 class ,并创建一个InvokeDynamic来表示Test::getId ,但问题是我无法将InvokeDynamic作为参数传递给我的MethodCall ...

如何在 ByteBuddy 转换期间增加方法? - How to augment methods during ByteBuddy transformation?

语境我正在使用 ByteBuddy 实现字节码转换,并且操作过程是一个多步骤过程。 因此,操纵必须能够: 扩充原有的方法完全创建新方法扩充通过 2 引入的方法。 对于 1. 我使用了通过以下方式应用的@OnMethodExit建议: 使用Helper方法的扩充代码(有效地设置字段的值)。 创建新方 ...

对 Scala function 中的每个语句进行计数的检测 - Instrumentation to count every statement in a Scala function

我有一个简单的Scala function ,我想在每次执行语句时增加一个 class 变量。 我希望 function 是这样的: 但是在软件级别这样做会使代码变得混乱。 我可以使用字节码操作来实现这一点,还是应该干预其他级别的编译? ...

Java 字节码 asm - 如何创建仅更改 class 名称的 class 的克隆? - Java bytecode asm - How can I create a clone of a class with only the class name changed?

Java asm - 如何创建 class 的克隆,仅更改 class 名称? 我知道有一种简单的方法可以使用 asm SimpleRemapper修改 class 名称,但我只想更改外部 class 名称而不修改方法中使用的 class 名称。 (请看下面的例子) 基本上如果我有一个目标 c ...

检测代码后的 NoClassDefFoundError - NoClassDefFoundError after instrumenting code

我将我的 Java 代理动态附加到检测代码的 java 进程。 基本上,它在每个方法的开始处添加了一个 static 调用: AgentClass位于代理的.jar中。 但是在检测之后,进程开始执行新代码并抛出NoClassDefFoundError ,它找不到AgentClass 。 我试图以 ...

Java 使用 ASM 修改字节码抛出 ClassFormatError: Invalid length XXX in LocalVariableTable - Java bytecode modification using ASM throws ClassFormatError: Invalid length XXX in LocalVariableTable

我正在使用 ASM(也使用树和实用程序)并且遇到了一个奇怪的异常 我正在尝试编辑 a.class 文件的字节码,以生成一个新文件。 我有一个 for 循环,里面有一些 if 分支,我尝试修改它。 我在两个 for 循环的代码下方发布了初始循环和所需生成的循环。 最初的 期望的 为了做到这一点,我使 ...

我可以在调用 this() / super() 之前和初始化任何最终字段之前在构造函数中插入指令吗? - Can I insert instructions in constructors before calling this() / super() and before initialising any final fields?

前言我一直在尝试使用 ByteBuddy 和 ASM,但我仍然是 ASM 的初学者,介于 ByteBuddy 的初学者和高级之间。 这个问题一般是关于 ByteBuddy 和关于 JVM 字节码限制的。 情况我的想法是通过检测构造函数来创建用于测试的全局模拟,以便在每个构造函数的开头插入如下指令: ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM