我想在核心JDK 5类的方法上添加“insertBefore”。由于某种原因它不起作用。以下是代码示例:
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类运行的代码,但我插入的代码永远不会运行。我只能在自己的班级上工作。此代码作为一个简单的独立应用程序运行。
有什么想法吗?
答案 0 :(得分:1)
修改java核心类是个坏主意。使用Java Instrumentation API的正确方法(自Java 1.5起)。