Точно так же, как сказал Стивен С, опция -verbose может сделать список отслеживания загруженных классов.
Если вы хотите извлечь файлы классов, возможно, вы можете использовать java.lang.instrument, чтобы получить файлы классов. Это просто для инструментирования Java-байтового кода.
Основной способ заключается в следующем:
Измерительная аппаратура самая большая роль, это определение динамических изменений и работы. Разработчики могут обычные Java-программы (с основной функцией Java), выполняющие параметры via-javaagent, указывать конкретные файлы jar (включая Instrumentation Agents) для запуска агента Instrumentation.
Резюме говорит о следующих шагах:
Подготовленная предварительная функция
Подготовка Java-класса, который содержит следующие два метода любого
Публичный статический void premain (String agentArgs, Instrumentation inst), [1] общедоступный статический void premain (String agentArgs), [2]
образец пакета. Verboseclass;
публичный класс Main {
public static void premain (Строковые аргументы, Instrumentation inst) {
...
}
}
Среди них приоритет [1] [2] уровня, чем высокий приоритет, будет реализация ([1] и [2] В то же время, суд пренебрег [2]).
В этой основной функции разработчик может выполнять тип операции.
AgentArgs является основной функцией параметров процесса, сопровождающих «-javaagent». И основная функция отличается, этот параметр представляет собой строку, а не строковый массив, если параметры ряда процедур, процедур, которые будут строкой самоанализа.
Inst - это примеры java.lang.instrument.Instrumentation из JVM, импортируемые автоматически. Инструментальный пакет Java.lang.instrument.Instrumentation является определением интерфейса, является основной частью этого пакета, в котором сосредоточены практически все функции, например, определение преобразования типа и операции и так далее. Вы должны также реализовать этот интерфейс
образец пакета. Verboseclass;
публичный класс Main {
public static void premain(String args, Instrumentation inst) {
inst.addTransformer(new Transformer());
}
}
Класс Transformer реализует ClassFileTransformer {
public byte[] transform(ClassLoader l, String className, Class<?> c,
ProtectionDomain pd, byte[] b) throws IllegalClassFormatException {
System.out.print("Loading class: ");
System.out.println(className);
return b;
}
}
Упаковка фляги
Этот класс Java будет упакован в файл jar, в котором свойства проявляются путем добавления «Premain-Class» к указанным шагам, которые подготовлены с использованием premain класса Java. (Может также потребоваться указать другие свойства, чтобы открыть больше функций)
Manifest-версия: 1.0
Premain-Class: sample.verboseclass.Main
Операция
Запуск с помощью следующих инструментов с Java-программами:
Java-javaagent: позиция документа jar [= импортированные основные параметры]
Как и в вашем проекте, вы можете написать коды для извлечения байтового кода в методе in ClassFileTransformer, который передаст загрузчик загрузочного кода в него.