通过复制创建的类不起作用

时间:2015-08-19 13:17:17

标签: java reflection asmx

我正在遵循ASM 4.0手册中的例子,在解释访问者的部分​​中,有一个使用类似代码复制类的例子:

    InputStream in=ASMHelloWorld.class.getResourceAsStream("Test.class");
    ClassWriter cw = new ClassWriter(0);
    ClassReader cr = new ClassReader(in);
    cr.accept(cw, 0);
    byte[] b2 = cw.toByteArray(); // b2 represents the same class as b1

不同之处在于他们在书中将输入数据定义为字节数组,但我不知道如何将类作为字节数组读取,而是使用了我在网上找到的一个例子来将类读作为InputStream。

我使用以下代码保存该类:

    DataOutputStream os = new DataOutputStream(new FileOutputStream("Test2.class"));
    os.write(b2);
    os.flush();
    os.close();

问题是当我尝试运行Test2时出现以下错误:

Error: Could not find or load main class Test2

Test.class和Test2.class的大小相同

1 个答案:

答案 0 :(得分:0)

在您的副本中,您有Test1.classTest类名称的文件。生成的类必须与.class

之前的文件名相同