[jboss-user] [Javassist user questions] - javassist.CannotCompileException: by java.lang.LinkageError:
arsami
do-not-reply at jboss.com
Fri Feb 8 14:12:22 EST 2008
Hi,
I am trying to change a class on-the-fly with this small program:
| Hello h = new Hello();
| h.say();
| ClassPool cp = new ClassPool(true);
| CtClass cc = cp.get("com.blabla.test.Hello");
| CtMethod m = cc.getDeclaredMethod("say");
| m.insertBefore("{ System.out.println(\"Hello.say():\"); }");
| Class c = cc.toClass();
| h = (Hello)c.newInstance();
| h.say();
and I get the following exception:
| javassist.CannotCompileException: by java.lang.LinkageError: duplicate class definition:
| at javassist.ClassPool.toClass(ClassPool.java:953)
| at javassist.ClassPool.toClass(ClassPool.java:896)
| at javassist.ClassPool.toClass(ClassPool.java:854)
| at javassist.CtClass.toClass(CtClass.java:1053)
| at com.blabla.test.PlainTester.testMethodInjection(PlainTester.java:32)
|
| Caused by: java.lang.LinkageError: duplicate class definition: com/blabla/test/Hello
| at java.lang.ClassLoader.defineClass1(Native Method)
| at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
| at java.lang.ClassLoader.defineClass(ClassLoader.java:465)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at javassist.ClassPool.toClass2(ClassPool.java:965)
| at javassist.ClassPool.toClass(ClassPool.java:947)
| ... 6 more
Of course, if I don't use the Hello class before injecting that method, it works fine. All the sample programs that I found on the net are showing a method injection without any prior use. However, my requirement is that, I have to be able to change a class while the system is running.
Is there any way that we can do that?
Your help is greatly appreciated...
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4127954#4127954
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4127954
More information about the jboss-user
mailing list