2012-03-14 71 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起)。