Java-агент ByteBuddy требует зависимости приложения, которая увеличивает размер jar агента - PullRequest
0 голосов
/ 09 февраля 2019

Я пишу java-агент, используя байтовый компаньон, он прекрасно работает, я использую множество аннотаций @ Advice.OnMethodEnter для добавления кода в существующий класс.

У меня возникает следующая проблема:

  • Я добавляю много приложений / сторонних зависимостей к агенту, что увеличивает размер jar агента

  • Меня беспокоит, не возникнут ли у меня проблемы с классами и т. Д., Если версия зависимости приложения изменится.

Подскажите, пожалуйста, есть ли способизбежать добавления зависимости приложения к Java-агенту приятеля байта?Похоже, в javassist, я могу добавить код в метод, используя, например.

например.

final String reportCode = MetricsCollector.class.getName() +
    ".report(" +
    "\"" + behavior.getLongName() + "\", " +
    "System.nanoTime() - $_traceTimeStart" +
    ");";

1 Ответ

0 голосов
/ 10 февраля 2019

В этом случае вы не должны включать код библиотеки в ваш агент;скорее, вы должны скомпилировать библиотеку в зависимости от при условии и затем использовать класс AgentBuilder.Transformer.ForAdvice, чтобы позволить Byte Buddy применить рекомендации, основанные на вашем коде и коде библиотеки, который находится в загрузчике классов пользователя по адресуво время выполнения.

...