[jboss-user] [Javassist Users] - VerifyError with addLocalVariable() and insertAfter()

Herkules000 do-not-reply at jboss.com
Thu Sep 10 04:43:10 EDT 2009

Hi all!

This is my first post here and I am a javassist newbie. So hopefully my problem can easily be solved.

>From a real usecase, I condensed the following fragment demonstrating my problem:

ClassPool cp = ClassPool.getDefault();
  | CtClass cl = cp.getCtClass("jatest.Test");
  | CtMethod m = cl.getDeclaredMethod("foo");
  | m.addLocalVariable("bar", CtClass.longType);
  | m.insertAfter("bar;", true);
  | Object o = cl.toClass().newInstance();

The class 'Test' is as simple as it can get:

public class Test {
  | 	public void foo() {}
  | }

Running the code delivers a VerifyError which I think it shouldn't:

Exception in thread "main" java.lang.VerifyError: (class: jatest/Test, method: foo signature: ()V) Register pair 1/2 contains wrong type
  |         at java.lang.Class.getDeclaredConstructors0(Native Method)
  |         at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
  |         at java.lang.Class.getConstructor0(Class.java:2699)
  |         at java.lang.Class.newInstance0(Class.java:326)
  |         at java.lang.Class.newInstance(Class.java:308)
  |         at jatest.Main.main(Main.java:27)

Tested with 3.11 and 3.5. Where is my fault?

Thank you,

- Joerg

View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4254349#4254349

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4254349

More information about the jboss-user mailing list