我正在遵循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的大小相同
答案 0 :(得分:0)
在您的副本中,您有Test1.class
个Test
类名称的文件。生成的类必须与.class