0
我想使用ASM創建一個簡單的類文件ASM創建Java類
我已經試過如下:
ClassPrinter c = new ClassPrinter();
ClassReader cr = new ClassReader(new FileInputStream("path/to/class"));
ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS|ClassWriter.COMPUTE_FRAMES);
cw.newClass("MyClass");
cw.newField("owner", "value", "I");
cr.accept(c, 0);
for(String s : c.values){
System.out.println(s);
}
ClassReader writerReader = new ClassReader(new FileInputStream("C:\\generated.class"));
writerReader.accept(cw,0);
然而,有創建ClassReader時是一個ArrayIndexOutOfBoundsException。
C:\ generated.class現在是一個空文件。
ClassPrinter是簡單地遍歷所有的實體和他們使用System.out.println
打印訪客如何才能做到這一點?
我需要能夠從頭開始創建類,而不僅僅是附加到已經存在的類。
依賴關係:
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>5.0.3</version>
</dependency>
我說這並beign產生writerReader很好,但是當我接受我得到A零位指針異常。請注意,如果使用ASM讀取的結果爲null,則寫入的文件擴展爲空{} – mangusbrother 2014-10-17 05:26:08
不完全確定代碼中出了什麼問題,但您似乎在寫入類之前創建了讀取器。我已經擴展了這個例子,使其更加完整。 – 2014-10-17 08:24:49