7

我想在核心 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 类运行的代码,但我插入的代码从未运行。我只能让它在我自己的课程上工作。此代码作为一个简单的独立应用程序运行。

有任何想法吗?

4

1 回答 1

1

修改 java 核心类是个坏主意。使用 Java Instrumentation API 的正确方法(从 Java 1.5 开始)。

于 2012-04-13T10:01:48.947 回答