I want to add an "insertBefore" on a method of a core JDK 5 class. For some reason it´s not working. Here's the code:
ClassPool pool = ClassPool.getDefault(); CtClass ctClass = pool.get("com.sun.org.apache.xerces.internal.impl.xs.XSMessageFormatter"); CtMethod ctMethod = ctClass.getDeclaredMethods(); ctMethod.insertBefore("System.out.println(\"WORKED\");"); ctClass.toClass();
The com.sun.org.apache.xerces.internal.impl.xs.XSMessageFormatter comes bundled with the JDK, it's inside rt.jar. After the snippet above, I run some code that forces the XSMessageFormatter class to run, but my inserted code never runs. I can only get this to work on my own classes. This code is running as a simple standalone app.