Переопределение классов JDK Bootstrap - PullRequest
0 голосов
/ 05 сентября 2018

Можно ли переопределить классы Bootstrap с помощью агента Java во время выполнения? Если быть более точным, я хочу переопределить некоторые классы в java.io пакете во время выполнения после их загрузки.

1 Ответ

0 голосов
/ 05 сентября 2018

Да, возможно использование агента Javaagent, который способен переопределять классы, так как многие классы в java.io уже будут загружены после активации вашего агента. Для этого вам нужно создать файл jar с методом premain, который объявляет свойство Can-Redefine-Classes или Can-Retransform-Classes.

Таким образом, вы можете зарегистрировать ClassFileTransformer с возможностями ретрансформации и ретрансформировать классы, которые вы хотите изменить. Обратите внимание, что это не позволяет изменять макет файла класса, например, добавляя поля или методы.

Вы можете использовать библиотеку, такую ​​как ByteBuddy, которая предлагает стандартный способ ретрансформации классов , используя его AgentBuilder для упрощения процесса . Обратите внимание, что вы должны определить совпадение игнорирования, которое не исключает все классы начальной загрузки, что по умолчанию используется для этого.

...