Ответ 1
Второй случай говорит о API инструментария Java - эта ссылка указывает на Javadoc, который довольно описателен.
А вот полная инструкция и пример создания Java-инструментария.
Основная концепция:
-
Внедрите статический метод
premain
(как аналогmain
), например:import java.lang.instrument.Instrumentation; class Example { public static void premain(String args, Instrumentation inst) { ... } }
-
Создайте файл манифеста (скажем,
manifest.txt
), обозначающий этот класс для предварительного основного исполнения. Его содержание:Premain-Class: Example
-
Скомпилируйте класс и упакуйте этот класс в архив
JAR
:javac Example.java jar cmf manifest.txt yourAwesomeAgent.jar *.class
-
Выполните свою JVM с помощью параметра
-javaagent
, например:java -javaagent:yourAwesomeAgent.jar -jar yourApp.jar