Java Instrumentation / JavassistHelper示例代码不起作用

时间:2013-04-28 21:04:16

标签: java instrumentation

我正在尝试在this tutorial

中构建并运行我自己的示例版本

我做了一个eclipse项目,它运行带有检测的HelloWorld类。如果我使用从该页面底部的链接下载的loggeragent.jar,它可以正常工作。但是如果我构建loggeragent.jar(来自相同的源代码),它会在method.insertBefore()中抛出异常:

无法检测HelloWorld,异常:[源错误]语法错误“r($ 1)+”)附近;“

根据调试器,它尝试插入的签名字符串:

“main(”+“args”+“=”+ org.slf4j.instrumentation.ToStringHelper.render($ 1)+“)”

现在,我需要对某些导入进行一些更改以获取要构建的代码。特别是,我需要添加import org.slf4j.instrumentation.JavassistHelper;。所以可能是两个罐子没有使用相同版本的JavaassistHelper,但我找不到另一个版本。

知道为什么这不起作用?另外,你能解释一下JavaassistHelper的作用,还是指向我的手册?

1 个答案:

答案 0 :(得分:1)

我发现了问题所在 - 示例代码中存在错误 - 它说

method.insertBefore(ifLog + "_log.info(\">> " + signature + ");");

应该说什么

method.insertBefore(ifLog + "_log.info(\">> " + signature + "\");");

(在结束时错过了一个“。”