Class 复制创建无效

Class creating by copying doesnt work

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

    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

不同的是,在书中他们将输入数据定义为字节数组,但我不知道如何将 class 读取为字节数组,而是使用我在网上找到的示例来读取 class作为输入流。

我使用以下代码保存 class:

    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大小相同

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

之前的文件名同名