Java 通过复制创建的类无效

Java 通过复制创建的类无效,java,reflection,asmx,Java,Reflection,Asmx,我遵循ASM 4.0手册中的exmaple,在解释访问者的部分中,有一个exmaple使用类似以下代码复制类: InputStream in=ASMHelloWorld.class.getResourceAsStream("Test.class"); ClassWriter cw = new ClassWriter(0); ClassReader cr = new ClassReader(in); cr.accept(cw, 0); byte[] b2 =

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

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

在您的副本中,您有
Test1.class
文件和
Test
类名。生成的类必须与
之前的文件名同名。class

字节码中的类名在哪里更改?您是正确的!我试着把它放在其他目录中,它从那个里开始工作(名为Test.class)。