Creating class using ASM
| Newsgroups | gmane.comp.java.objectweb.asm |
|---|---|
| Message-ID | <[email protected]> |
at beginning i was planning to create easy class, something like :
class myClass{
public static void main(String arg[])
{
System.out.println(1);
}
}
based on tutorial what i founded i wrote code:
ClassWriter cw = new ClassWriter(0);
cw.visit(Opcodes.V1_6, Opcodes.ACC_PUBLIC +Opcodes.ACC_SUPER,
"myClass", // class name
null,
"java/lang/Object",
null); // source file
MethodVisitor mvc = cw.visitMethod(Opcodes.ACC_PUBLIC, "<init>", "()V", null,
null);
mvc.visitVarInsn (Opcodes.ALOAD, 0);
mvc.visitMethodInsn (Opcodes.INVOKESPECIAL, "java/lang/Object", "<init>",
"()V");
mvc.visitInsn (Opcodes.RETURN);
mvc.visitEnd();
MethodVisitor mv = cw.visitMethod( Opcodes.ACC_PUBLIC+Opcodes.ACC_STATIC,
"main", // method name
"(Ljava/lang/String[];)V", // method descriptor
null, // exceptions
null); // method attributes
mv.visitCode();
mv.visitFieldInsn (Opcodes.GETSTATIC, "java/lang/System", "out",
"Ljava/io/PrintStream;");
mv.visitInsn(Opcodes.ICONST_1);
mv.visitMethodInsn (Opcodes.INVOKEVIRTUAL, "java/io/PrintStream", "println",
"(I)V");
mv.visitInsn (Opcodes.RETURN);
mv.visitEnd();
cw.visitEnd();
byte[] bytecode = cw.toByteArray();
which is not working, but after i disasseble both classes, i got almost same
code for both of them:
public class myClass extends java.lang.Object{
public myClass();
Code:
0: aload_0
1: invokespecial #8; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: getstatic #16; //Field java/lang/System.out:Ljava/io/PrintStream;
3: iconst_1
4: invokevirtual #22; //Method java/io/PrintStream.println:(I)V
7: return
}
where in my class made from source i have #1 #2 #3 instead of #8 #16 #22
and error message when i'm trying run my class is:
Arguments can't fit into locals in class file myClass
can anyone tell me what i'm doing wrong
regards
message-footer.txt
(text/plain, 238 B)
-- You receive this message as a subscriber of the [email protected] mailing list. To unsubscribe: mailto:[email protected] For general help: mailto:[email protected]?subject=help OW2 mailing lists service home page: http://www.ow2.org/wws