ASM to create java class -
i trying utilize asm create simple class file
i have tried follows:
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);
however there arrayindexoutofboundsexception when creating classreader.
c:\generated.class of empty file.
classprinter visitor traverses entities , prints them using system.out.println
how can done?
i need able create classes scratch not append existing ones.
dependencies:
<dependency> <groupid>org.ow2.asm</groupid> <artifactid>asm</artifactid> <version>5.0.3</version> </dependency>
you seem never write file "c:\generated.class"
what cr , c in code fragment?
looks missing before open reader:
string filename = "c:\\generated.class"; // generate class system.out.println("generating myclass"); classwriter cw = new classwriter(classwriter.compute_maxs|classwriter.compute_frames); cw.newclass("myclass"); cw.newfield("owner", "value", "i"); // print generated class stdio see generated expected system.out.println("generated:"); classprinter cp = new classprinter(); cp.accept(cw, 0); // write generated class file system.out.println("writing " + filename); fileoutputstream os = new fileoutputstream(filename); os.write(cw.tobytearray()); os.close(); // read file system.out.println("reading " + filename); classreader cr = new classreader(new fileinputstream("c:\\generated.class")); // print class system.out.println("read"); cr.accept(c, 0); cr.accept(cw,0);
java
No comments:
Post a Comment