2

このチュートリアルの例の独自のバージョンをビルドして実行しようとしています

インストルメンテーションを使用して HelloWorld クラスを実行する Eclipse プロジェクトを作成しました。そのページの下部にあるリンクからダウンロードした loggeragent.jar を使用すると、機能します。しかし、(同じソース コードから) loggeragent.jar をビルドすると、method.insertBefore() で例外がスローされます。

HelloWorld を計測できませんでした。例外: [source error] "r($1)+"));" 付近の構文エラーです。

デバッガーによると、挿入しようとする署名文字列は次のとおりです。

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

ここで、コードをビルドするために、いくつかのインポートにいくつかの変更を加える必要がありました。特に、import org.slf4j.instrumentation.JavassistHelper; を追加する必要がありました。したがって、2 つの 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 に答える