web-dev-qa-db-ja.com

Javaプログラムを複数のJavaエージェントで起動するには?

Java progam with a Java agent:

Java -javaagent:myAgent.jar MyJavaProgram

しかし、2つ以上のJavaエージェントを追加してプログラムをインスツルメントしたい場合はどうすればよいですか?Java -javaagent:... for JVMにロードする必要があるすべてのエージェント。

私はこのようなことを試しました:

Java -javaagent:agentA.jar, agentB.jar MyJavaProgram

またはこのようなもの:

Java -javaagent:agentA.jar agentB.jar MyJavaProgram

しかし、成功していません。

私の問題を解決する答えはありますか?

ありがとうございました。

72
Flueras Bogdan

2つのjavaagentパラメータはどうですか

Java -javaagent:agentA.jar -javaagent:agentB.jar MyJavaProgram
122
Tahir Akhtar

複数の引数を使用してこれを行うことができるようです。 ドキュメント から:

コマンドラインインターフェイスを使用した実装では、コマンドラインに次のオプションを追加することにより、エージェントが開始されます。

-javaagent:jarpath[=options] 

jarpathは、エージェントJARファイルへのパスです。 optionsはエージェントのオプションです。 このスイッチは、同じコマンドラインで複数回使用できるため、複数のエージェントを作成できます。複数のエージェントが同じjarpathを使用する場合があります。エージェントJARファイルは、JARファイルの仕様に準拠する必要があります。

(私の強調)

53
Brian Agnew

上記の答えに加えて、antを使用しており、<jvmargs />を複数のjarとともに-javaagentに含めてサーバーを起動する場合は、次のようにします。

build.xml

<target name="blah">
...
    <jvmarg value="-javaagent:${jar1.path}" />
    <jvmarg value="-javaagent:${jar2.path}" />
...
</target>
2
Lucky

複数のJavaエージェントをサポートすることを目標とする新しいプロジェクトがあります。現在は特定のものに制限されています。

エージェントボンドはスーパーエージェントであり、他の複数のエージェントをラップしてディスパッチします。そうすれば、単一の設定データ(複数の個別の部分を含む)を使用してJVM内に単一のエージェントをインストールするだけで済みます。

詳細については、 https://github.com/fabric8io/agent-bond/blob/master/README.md を参照してください

0
Marged