java - 使用 Java ASM 删除方法

标签 java java-bytecode-asm bytecode-manipulation

我正在尝试使用 Java ASM图书馆,经过相当多的研究,我还没有找到解决我遇到的问题的方法。我正在尝试制作一个执行以下操作的应用程序:

  • 从外部 Jar 文件中读取类
  • 从指定的类中完全删除某些方法
  • 打印到控制台或存储修改后的类的编译字节码或编译后的类内容,例如来自 new String(cw.toByteArray()) , cw 是 ClassWriter 的一个实例(类似于您使用记事本编辑类文件的方式)

  • 我已经能够读取字节码和编译的类内容,但不能删除方法。我一直无法找到任何工作代码,只有部分代码,对如何实现它的解释很少。

    最佳答案

    您可以实现 ClassVisitor覆盖 visitMethod方法和返回 null从这个方法不调用 super.visitMethod当你发现某种模式时。

    这样,有问题的方法将被跳过并且不会添加到创建的类文件中。

    关于java - 使用 Java ASM 删除方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41968996/

    相关文章:

    java - 为 POI 生成的 Excel 文件中的单元格添加边框

    java - smartgwt 在 ComboBoxItem 中添加空白行或允许用户设置空白值

    Java asm从方法变量中获取 "this"对象

    java - 将 javassist 字节码操作与 maven 编译集成

    java - 为什么 Java 7 字节码 validator 不会对此感到窒息?

    java - ASM 库计算的堆栈大小错误

    java - 用于测量代码行的 Eclipse 插件

    java - 如何使用数据存储区 java 客户端检索具有重复属性的嵌入式实体

    java - 了解常量池的 javap 输出

    java - 将未导出/未打开的包添加到模块信息的 ModulePackages 的用例是什么?