Я пытаюсь перечислить порядок загрузки загрузчика классов Java. если я использую параметр -verbose
, он перечислит каждый отдельный интерфейс/класс, который он загрузит, включая тонны интерфейсов, таких как Serializable, исключения и т.д. Есть ли способ настроить этот вывод, чтобы он показывал только классы, которые загружаются в класс my main метод определен?
Java многостраничный загрузчик классов
Ответ 1
Я думаю, ваш лучший выбор - сделать следующее:
- Вывести некоторый фиксированный текст после запуска метода
main
и до его завершения. - Вывести подробный вывод в файл
- Используйте такие вещи, как less или grep, чтобы найти классы, загруженные между двумя тегами из основного метода.
Здесь есть аналогичный вопрос и некоторые ответы: Есть ли способ получить классы, загруженные ClassLoader?
Попробовал ли вы -verbose:class
?
Ответ 2
Здесь выражение sed, которое будет анализировать вывод java -verbose: class для создания пар загруженного имени класса и его файла jar. Вы можете продолжить передачу через сортировку, чтобы получить уникальные файлы jar. Например,
java -verbose:class -version 2>/dev/null |
sed -ne 's/\[Loaded \(.\+\) from \(.\+\)\]/\2/p' |
sort -u
выходы
/usr/local/jdk1.7.0_67/jre/lib/rt.jar