首页 > TAG信息列表 > java-bytecode-asm

调用使用Java ASM添加的方法时发生ClassFormatError错误

我正在使用Java ASM向已编译的类添加方法.在运行时我得到 调用新添加的方法时发生以下错误. ClassFormatError: Field "valueEquals" in class test/asm/Item has illegal signature "(Ljava/lang/Object;)Z" 以下是我希望添加的方法 public boolean valueEquals(Obje

java-如何通过ASM在字节码中捕获运行时异常

我试图通过异常捕获运行时异常.我能够捕获通常的方法退出事件.但是,控件永远不会到达opcode == Opcodes.ATHROW. 我认为在调用事件时做错了事. 这是我的示例代码: public void visitCode() { // mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/System", "out", "Ljav

java-ASM 3.3.1中缺少ASMifier类

根据the ASM FAQ,要获取示例ASM代码,我应该使用ASMifier类,如下所示: java -classpath "asm.jar;asm-util.jar" org.objectweb.asm.util.ASMifier org/domain/package/YourClass.class 但这让我出错了: Error: Could not find or load main class org.objectweb.asm.util.ASMifier

Java找不到类文件,而Javap可以找到

我已经使用Java ASM library编译了一个类(称为Test.class).我决定尝试通过使用“ java”命令运行该类,以确保已正确编译了该类. 但是,当我这样做时,出现了“找不到或加载主类测试”消息.我认为这很奇怪,因为该类位于当前工作目录内(我也曾尝试将“.”作为类路径传递,但无济于事).然

JAVA ASM中的类转换器-可以生成吗?

我想开始使用Java ASM转换项目中的类-向某些方法添加一个String参数,并使用该参数发送日志. 在asm website我读过 If you want to implement a class transformer, write two Java source files (before and after transformation) and use the compare view of the plugin

Java-JMockit:模拟的api会在一段时间后恢复

我正在使用JMockit来模拟System.currentMillis(). 很少有调用返回模拟时间,但是一段时间后,它将开始返回原始时间.当我在禁用JIT后运行相同的程序时,它运行得很好.解决方法:发生这种情况是因为JVM中的JIT优化器不会检查重新定义的方法(重新定义是通过JVM中的另一个子系统完成的).因

ASM:输出Java字节码和操作码

我正在尝试编写一个程序,该程序使用.class文件并收集.class文件的所有方法以及每个方法的内容.这是我的代码 public class ClassReaderTest1 { public static void main(String[] args) throws Exception{ InputStream in = new FileInputStream("*.class");

Java ASM GeneratorAdapter变量命名

我正在生成一个简单的类,无法注入适当的变量名称. ASM版本是5.2. 这是代码: package com.test; import org.objectweb.asm.*; import org.objectweb.asm.commons.GeneratorAdapter; import org.objectweb.asm.commons.Method; import java.nio.file.Files; import java.nio.file.

java – ASM从堆栈帧中获取精确值

我有一些方法,其中包含像ILOAD这样的内容,我希望以某种方式在此指令之后获取堆栈的值.不只是打字,而是确切的价值.我知道我需要模拟方法执行才能做到这一点,但我不知道如何正确地做到这一点. 我有这样的测试方法叫main: sipush 15649 istore_0 /* c */ getstatic

Java终于返回了,奇怪的字节码

我终于看到了一个Java拼图问题,并返回 int i = 0; try { return i; } finally { i++; } 什么是这个函数的返回值,我知道这将返回0,我测试另一个代码 StringBuffer sb = new StringBuffer("11"); try { return sb; } finall

java – 方法代码太大了!使用ASM的例外

我使用ASM代码迭代一个类而不操纵任何字节代码. 但是当我将classwriter转换为bytearray(cw.toByteArray())时,我正在方法代码太大了!例外. 任何人都可以告诉我这是什么时候发生的.. 我的代码片段如下— InputStream in= new FileInputStream("D:/AshiqWorkspace/RandD/ByteCodeStud

java – ASM 5中visitMethodInsn的“itf”参数说明

对于ASM 5,不推荐使用原始的MethodVisitor.visitMethodInsn().添加了一个名为itf的新参数. API参考说它意味着“如果方法的所有者类是一个接口”. 但我认为操作码应该是INVOKEINTERFACE,如果所有者是接口,则itf应该为true,操作码应该是INVOKEVIRTUAL,如果所有者是普通类,则itf应该

Java垃圾收集器会免费使用未使用的类

我的程序使用ASM库生成一个adhoc类,以实现高效计算.每次调用都会生成一个新类. 定义adhoc类的类加载器实例和adhoc类的所有实例将在短时间内无法访问.在此之后是否会释放adhoc类代码?解决方法:是的,在类加载器符合垃圾收集条件之后,它加载的类也有资格进行垃圾收集(没有提供对类的其

android – Dalvik字节码中的“throws”和“exception of annotation”

为什么生成字节代码为 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/FileNotFoundException; } .end annotation 而不是.throws Ljava / io / FileNotFoundException 如果一个方法声明在java代码的头文件中抛出FileNotFound

java – iload_1,iload_2,iload_3和iload #index字节码有什么区别?

iload #index与其他3字节代码的区别.它们之间是否有任何性能差异.解决方法: How iload #index differs from other 3 byte codes. iload_1 _2 _3使用一个字节的字节代码.另一种形式使用2. Is there any performance difference between them. 只是间接的.大多数情况下它没有

导致此错误的原因是:java.lang.VerifyError:堆栈高度不一致2!= 1?

我使用ASM为while()语句生成字节代码.但是eclipse报道: Exception in thread "main" java.lang.VerifyError: (class: show_cise_image, method: main signature: ([Ljava/lang/String;)V) Inconsistent stack height 2 != 1 at java.lang.Class.getDeclaredMethods0(Native Me