通过复制创建类是行不通的



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

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

之前的文件名相同

相关内容

  • 没有找到相关文章

最新更新