代码之家  ›  专栏  ›  技术社区  ›  Mike Deck

从任意.class文件创建bcel javaclass对象

  •  4
  • Mike Deck  · 技术社区  · 17 年前

    我在和BCEL玩。我不是用它来生成字节码,而是试图检查现有编译类的结构。

    我需要能够指向硬盘上任意位置的.class文件并加载 JavaClass 基于此的对象。理想情况下,我希望避免将给定的类添加到我的类路径中。

    3 回复  |  直到 10 年前
        1
  •  10
  •   Tom Hawtin - tackline    17 年前

    简单的方法是用文件名创建一个类解析器,然后调用parse()。或者,您可以使用合成文档并提供一个类路径(这不是您的类路径,iyswim)。

        2
  •  3
  •   JITHIN_PATHROSE    10 年前

    现有的.class可以被类加载到Java Lang-class对象。然后可以转换成BCEL中间的JavaClass结构。以下代码可能有帮助:

    Class<?> javaClass1 = null;
    javaClass1 = ucl.loadClass("com.sample.Customer");
    org.apache.bcel.classfile.JavaClass javaClazz1=org.apache.bcel.Repository.lookupClass(javaClass1);
    
        3
  •  2
  •   ILOVEPIE    13 年前
    new ClassParser(classfilebytearrayhere).parse()