Подтвердить что ты не робот

Java многостраничный загрузчик классов

Я пытаюсь перечислить порядок загрузки загрузчика классов Java. если я использую параметр -verbose, он перечислит каждый отдельный интерфейс/класс, который он загрузит, включая тонны интерфейсов, таких как Serializable, исключения и т.д. Есть ли способ настроить этот вывод, чтобы он показывал только классы, которые загружаются в класс my main метод определен?

4b9b3361

Ответ 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