2

我正在尝试在本教程中构建和运行我自己的示例版本

我制作了一个 Eclipse 项目,它使用仪器运行 HelloWorld 类。如果我使用从该页面底部的链接下载的 loggeragent.jar,它就可以工作。但是,如果我构建 loggeragent.jar(来自相同的源代码),它会在 method.insertBefore() 中引发异常:

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

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

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

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

知道为什么这不起作用吗?另外,你能解释一下 JavaassistHelper 是做什么的,或者给我指一本手册吗?

4

1 回答 1

1

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

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

应该在哪里说

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

(最后缺少一个 \" )。

于 2013-04-29T20:47:39.513 回答