BCELJAVA字节码操作库

联合创作 · 2023-10-01 03:38

Byte Code Engineering Library (BCEL),这是 Apache Software Foundation 的 Jakarta 项目的一部分。BCEL 是 Java classworking 最广泛使用的一种框架,它可以让您深入 JVM 汇编语言进行类操作的细节。BCEL 与 Javassist 有不同的处理字节码方法,BCEL 在实际的 JVM 指令层次上进行操作(BCEL 拥有丰富的 JVM 指令级支持)而 Javassist 所强调的源代码级别的工作。

使用示例代码:

JavaClass clazz = Repository.lookupClass("java.lang.String");
  System.out.println(clazz);
  printCode(clazz.getMethods());
  ...
  public static void printCode(Method[] methods) {
    for(int i=0; i < methods.length; i++) {
      System.out.println(methods[i]);

      Code code = methods[i].getCode();
      if(code != null) // Non-abstract method
        System.out.println(code);
    }
  }

Java 编译过程:

Java 的 Class 文件结构:

浏览 2
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报