0 Replies Latest reply on Mar 8, 2012 8:55 AM by rodrigo.uchoa

    Is is possible to instrument java core classes? Classes loaded by the bootstrap classloader

    rodrigo.uchoa

      Hello!

       

      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()[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?