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