Как найти, какие банки и в том, какой порядок загружается classloader?

Я не мог найти четкий ответ на этот вопрос в другом месте, таким образом, я попробую здесь:

Есть ли некоторый путь (программный или другой) для получения списка БАНОК/КЛАССОВ, загруженных Приложением Classloader в точном порядке, они были загружены? Приложением Classloader я имею в виду classloader, который загружает приложение EAR в сервере приложений (WLS, БЫЛ, JBoss...), но очевидно, это относится к любому classloader.

Так, сделать вывод, что я хотел бы узнать, - список и порядок БАНОК, загруженных указанным classloader. Не отдельные классы, который достаточно легко узнать путем вызова classloader.getPackages (), но список файлов JAR, которые были загружены этим classloader.

43
задан Valentin Rocher 23 February 2010 в 13:17
поделиться

2 ответа

Короткий ответ - нет. Загрузчики классов не обязаны раскрывать свою логику поиска.

Однако, если ваш экземпляр загрузчика классов является URLClassLoader или подклассом, тогда у вас есть доступ к списку файлов jar / каталогов с помощью метода getURLs () . Согласно документу для этого класса, эти URL-адреса будут просматриваться по порядку.

На практике, если вы пытаетесь выяснить, откуда загружается класс, ответ Стива , вероятно, будет более полезным.

14
ответ дан 26 November 2019 в 22:47
поделиться

Пробовали ли вы использовать параметр JVM -verbose: class . Он отображает все загруженные файлы и классы JAR.

Пример:

[Opened C:\Program Files\JDK160~1\jre\lib\rt.jar]
[Loaded java.lang.Object from C:\Program Files\JDK160~1\jre\lib\rt.jar]
76
ответ дан 26 November 2019 в 22:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: