Описание тега byte-buddy

Byte Buddy is a code generation and manipulation library for creating and modifying Java classes during the runtime of a Java application and without the help of a compiler. Byte Buddy allows the creation of arbitrary classes and is not limited to implementing interfaces for the creation of runtime proxies. Furthermore, Byte Buddy offers a convenient API for changing classes either manually, using a Java agent or during a build.
1 ответ

Byte Buddy - определить конструктор с вызовом суперкласса и инициализировать поле

У меня есть такой класс, как: public class Sample{ private String a; private String b; public Sample(String a, String b) { this.a = a; this.b = b; } public String getA() {return a;} public String getB() {return b;} } Я хочу создать динамический клас…
3 ответа

Как эффективно обернуть POJO с Bytebuddy?

Я хочу обернуть простой класс POJO. Дело в том, что я ничего не знаю об этом классе заранее, только то, что это POJO с сеттерами и геттерами. Я хочу заменить этот класс моим Proxyclass, чтобы каждый раз, когда клиент вызывал getter или setter, я мог…
09 июн '16 в 07:09
0 ответов

ByteBuddy Agent: при перехвате методов тест JUnit завершается неудачно

Я пытаюсь динамически анализировать тесты JUnit с помощью ByteBuddy (1.7.5), поэтому я не знаю их заранее. Я загружаю их с помощью метода run(), описанного ниже, и перехватываю агент, созданный с помощью метода Agent(), приведенного ниже. Модульные …
06 окт '17 в 12:50
1 ответ

ByteBuddy - перебазировать уже загруженный класс

У меня есть следующий код, работающий в приложении SpringBoot, и он делает то, что я ожидаю. TypePool typePool = TypePool.Default.ofClassPath(); ByteBuddyAgent.install(); new ByteBuddy() .rebase(typePool.describe("com.foo.Bar").resolve(), ClassFileL…
18 дек '17 в 22:57
1 ответ

Удаляет ли Byte Buddy сгенерированные файлы классов в хранилище Android?

Я заметил, что классы, созданные Byte Buddy во время выполнения, были записаны в папку data / data, но после закрытия приложения эти сгенерированные классы все еще существуют там. Нужно ли нам писать код для удаления этих файлов самим или у Byte Bud…
02 фев '16 в 12:55
2 ответа

Классы фильтров, которые снабжены указанной аннотацией

Я использую Java-агенты для манипулирования байт-кодом, и я хотел бы генерировать методы в классы, которые снабжены конкретной аннотацией. Как я могу сделать? Что-то вроде этого: @Foo public class Bar { // inject methods here } Если это возможно, от…
14 фев '19 в 17:08
1 ответ

Использование Byte Buddy для агента Java

Я хочу создать агента, который будет подключаться к нашим работающим серверам Tomcat и Weblogic, который будет перехватывать все вызовы методов для всех классов, объявленных в пакете моей компании, и выполнять некоторую регистрацию метрик, таких как…
26 окт '15 в 13:09
2 ответа

Переопределить нестатические методы

Я пытаюсь переопределить простой нестатический метод, но получаю исключение: Exception in thread "main" java.lang.UnsupportedOperationException: class redefinition failed: attempted to change the schema (add/remove fields) Классы: class Source { def…
20 сен '17 в 09:30
2 ответа

Как создать динамический прокси класса без публичного конструктора, используя ByteBuddy

Я хочу создать динамический прокси класса Sample, у которого нет двух открытых конструкторов, он не работает и выдает ошибку. Но если я сделаю конструктор как Public, он будет работать нормально. Возможно ли в байтовом партнере добиться этого? Также…
14 ноя '18 в 17:45
2 ответа

Java-агент, использующий Byte-Buddy, не работает

Мне нужна ваша помощь в поиске, что не так с моей реализацией... Я пытаюсь реализовать простой профилировщик времени выполнения JVM, используя byte-buddy. В общем, мне нужно, чтобы каждый вызов метода регистрировался в стеке, которым я управляю в от…
27 июл '16 в 08:45
4 ответа

Ошибка в реализации с интерфейсом

Извините за мой английский, у меня проблемы с реализацией. У меня есть абстрактный класс только с одним методом, который реализует интерфейс package br.com.teste; public abstract class Test implements IDefault { @Override public String test1() { ret…
29 янв '17 в 14:59
1 ответ

Ошибка при переопределении метода с помощью ByteBuddy: "Не удалось переопределить класс: попытка добавить метод"

Я изучаю Byte Buddy и пытаюсь сделать следующее: создать подкласс из данного класса или интерфейса затем заменить метод в подклассе Обратите внимание, что подкласс "загружен" в ClassLoader перед одним из его методов (sayHello) переопределено. Сбой с…
23 ноя '16 в 21:48
1 ответ

MethodHandler в Hibernate с использованием прокси-серверов ByteBuddy застревает в бесконечном цикле

В настоящее время я перевожу старый инструмент для Hibernate для автоматизации предварительной выборки на основе статистики сущностей. В старом инструменте использовался Hibernate 3.1, так что есть над чем поработать. Традиционно Hibernate использов…
31 июл '18 в 11:52
2 ответа

Byte Buddy Advice ломает отладчик Eclipse

Я использовал net.bytebuddy.asm.Advice для добавления кода до и после соответствующим образом аннотированных методов, для запуска и остановки таймеров. Модифицированные классы загружаются вручную в загрузчик целевого класса, прежде чем можно будет с…
28 авг '18 в 23:28
1 ответ

Сбой ByteBuddy при попытке переопределить sun.reflect.GeneratedMethodAccessor1

Руководствуясь любопытством, я попытался экспортировать байт-код GeneratedMethodAccessor1 (сгенерированный JVM при использовании отражения). Я пытаюсь получить байт-код класса следующим образом: public class MethodExtractor { public static void main…
16 мар '15 в 21:18
1 ответ

Как избежать рекурсивных вызовов с помощью байта приятель - java.lang.StackruError

У меня есть совет, который вызывает аналогичный метод в совете. Как сделать так, чтобы совет вызывался один раз и только один раз? Прямо сейчас, так как метод, который я вызываю в рамках совета, тот же, что и инструментальный, он переходит в рекурси…
21 апр '17 в 10:56
1 ответ

Добавление аннотации с заданным значением с помощью Byte Buddy

Как я могу использовать Byte Buddy, чтобы добавить аннотацию с заданным значением? Я играю с созданием тестовых классов для JUnit, и я хотел бы аннотировать сгенерированный класс @RunWith(SomeRunner.class),
08 янв '16 в 13:13
1 ответ

Неопределенный метод для типа AgentBuilder.Default ByteBuddy

Метод rebase(( type) -> {}) не определен для типа AgentBuilder.Default. public static void premain(String arg, Instrumentation inst){ new AgentBuilder.Default() .rebase(type -> type.getSimpleName().equals("Calculator")) .transform((builder, typeD…
14 июл '17 в 10:19
1 ответ

Java - способен ли bytebuddy агент "полностью" переопределить класс?

Способен ли агент байтового партнера преодолевать ограничения API присоединения, например, "определение нового метода", "изменения статической переменной"? я могу увидеть это redefineClasses Метод вызывается из Agent Builder, но не уверен, что он та…
08 янв '18 в 11:19
1 ответ

ByteBuddy: новые определенные поля не видны через отражение

Я использую ByteBuddy в агенте, чтобы добавить переменную отслеживания для каждого Runnable в тестовой программе: new AgentBuilder.Default() .with(AgentBuilder.LambdaInstrumentationStrategy.ENABLED) .type(ElementMatchers.isSubTypeOf(Runnable.class) …
18 май '17 в 18:28