I want to add an "insertBefore" on a method of a core JDK 5 class. For some reason it´s not working. Here's an example of the code:
ClassPool pool = ClassPool.getDefault();
CtClass ctClass = pool.get("com.sun.org.apache.xerces.internal.impl.xs.XSMessageFormatter");
CtMethod ctMethod = ctClass.getDeclaredMethods()[0];
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.
Any ideas?
It is bad idea to modify java core classes. The right way to use Java Instrumentation API (since Java 1.5).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With