Re: get the class object in the byte-code and more....

Andrea <[email protected]> Fri, 7 Jul 2006 19:17:15 +0000 (UTC)
Newsgroups gmane.comp.jakarta.bcel.user
Message-ID <[email protected]>
Dave Brosius <dbrosius <at> apache.org> writes:
> 
> Often times questions like, "How i do this?" can be most easily answered by 
> BCELifier, a tool bundled with the distribution that given a java class, 
> writes a BCEL program to generate that class.
>

Thansk for the suggestion, but using BCELified din't help me a lot. I've created
this class

public class Bcelify {

	public static void main(String[] args) {
		
		try {
			JavaClass jclass = new ClassParser("Bcelify.class").parse();
			BCELifier b = new BCELifier(jclass, System.out);
			b.start();
			Class c = int.class;
			System.out.println(c);
		}
		catch(Exception e) {
			System.out.println(e.getMessage());
		}		
	}
}

The instuction I'm interested in is: 
int.class; 
that in the resultin code is generated with 
factory.createFieldAccess("java.lang.Integer", "TYPE", new
ObjectType("java.lang.Class"), Constants.GETSTATIC);

and this is ok. The problem is that if instead of a primitive I use a class name
writing something like String.class I have an "Unknown or invalid constant type
at 42" error. Watching the bytecode the classobject is obtained by a ldc_w
instruction but I don't know how to create it in BCEL casue I've no idea of what
argument I have to pass it.