2012-03-14 72 views
6

我想在覈心JDK 5類的方法上添加「insertBefore」。由於某種原因,它不起作用。下面的代碼示例:用javassist java核心類可以測試儀器嗎?引導類加載器加載的類

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(); 

的com.sun.org.apache.xerces.internal.impl.xs.XSMessageFormatter自帶的JDK捆綁在一起,它裏面的rt.jar。在上面的片段之後,我運行了一些強制XSMessageFormatter類運行的代碼,但是我插入的代碼從未運行。我只能得到這個在我自己的課程上工作。此代碼作爲一個簡單的獨立應用程序運行。

任何想法?

回答

1

修改java核心類是個壞主意。使用Java Instrumentation API的正確方法(自Java 1.5起)。