95 Stimmen

Wie kann ich mein Java-Programm mit mehr als einem Java-Agenten starten?

Ich weiß, wie man ein Java-Programm mit einem Java-Agenten startet:

java -javaagent:myAgent.jar MyJavaProgram

Was aber, wenn ich 2 oder mehr Java-Agenten hinzufügen möchte, um mein Programm zu instrumentieren? Ich möchte nicht für jeden Agenten, den ich in die JVM laden muss, erneut die Option java -javaagent:... aufrufen.

Ich habe etwas Ähnliches ausprobiert:

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

oder etwas in dieser Art:

java -javaagent:agentA.jar agentB.jar MyJavaProgram

Aber sie haben keinen Erfolg.

Gibt es eine Antwort, um mein Problem zu lösen?

Ich danke Ihnen.

164voto

Tahir Akhtar Punkte 11147

Wie wäre es mit zwei javaagent Parameter?

java -javaagent:agentA.jar -javaagent:agentB.jar MyJavaProgram

60voto

Brian Agnew Punkte 260470

Es scheint, dass Sie dies mit mehreren Argumenten tun können. Aus der Dokumentation :

Bei Implementierungen mit einer Befehlszeilenschnittstelle wird ein Agent durch Hinzufügen dieser Option in der Befehlszeile gestartet:

-javaagent:jarpath[=options] 

jarpath ist der Pfad zur JAR-Datei des Agenten. Optionen sind die Agentenoptionen. Dieser Schalter kann mehrmals in derselben Befehlszeile verwendet werden, so dass mehrere Agenten entstehen . Mehrere Agenten können denselben Jarpath verwenden. Eine Agenten-JAR-Datei muss der JAR-Dateispezifikation entsprechen.

(meine Hervorhebung)

2voto

Lucky Punkte 15797

Ergänzend zu den obigen Antworten: Wenn Sie Ameisen verwenden und Folgendes einschließen möchten <jvmargs /> mit mehr als einem Gefäß zu -javaagent um den Server zu starten, habe ich es folgendermaßen gemacht,

build.xml

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

1voto

Marged Punkte 9710

Es gibt ein neues Projekt mit dem Ziel, mehrere Java-Agenten zu unterstützen. Derzeit ist es auf bestimmte Agenten beschränkt.

Agent Bond ist ein Superagent, der mehrere andere Agenten einwickelt und losschickt. Auf diese Weise müssen Sie nur einen einzigen Agenten in Ihrer JVM mit einem einzigen Satz von Konfigurationsdaten (der mehrere separate Teile enthält) installieren.

Siehe https://github.com/fabric8io/agent-bond/blob/master/README.md für Details

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X