Как запустить мою программу Java с несколькими агентами java?

Я знаю, как запустить java-прогаму с помощью java-агента:

java -javaagent:myAgent.jar MyJavaProgram

Но что, если я хочу добавить 2 или более java-агентов для инструмента моей программы? Я не хочу повторно запускать java -javaagent:... для каждого агента, который я должен загрузить в JVM.

Я пробовал что-то вроде этого:

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

или что-то вроде этого:

java -javaagent:agentA.jar agentB.jar MyJavaProgram

Но не добились успеха.

Есть ли ответ на решение моей проблемы?

Спасибо.

Ответ 1

как насчет двух параметров javaagent

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

Ответ 2

Казалось бы, вы можете сделать это, используя несколько аргументов. Из документа :

В реализациях с интерфейсом командной строки агент запускается добавлением этой опции в командную строку:

-javaagent:jarpath[=options] 

jarpath - это путь к файлу JAR агента. Параметры - это параметры агента. Этот переключатель может использоваться несколько раз в одной командной строке, тем самым создавая несколько агентов. Более одного агента может использовать один и тот же jarpath. Файл JAR агента должен соответствовать спецификации файла JAR.

(мой акцент)

Ответ 3

Добавляя к приведенным выше ответам, если вы используете ant и хотите включить <jvmargs /> с более чем одной банкой в ​​-javaagent, чтобы запустить сервер, вот как я это сделал,

build.xml

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

Ответ 4

Существует новый проект с целью поддержки нескольких агентов Java. В настоящее время он ограничен конкретными.

Agent Bond - супер агент, который переносит и отправляет несколько других агентов. Таким образом, вам нужно установить только один агент в вашей JVM с одним набором данных конфигурации (который содержит несколько отдельных частей).

Подробнее см. https://github.com/fabric8io/agent-bond/blob/master/README.md