Я не мог найти четкий ответ на этот вопрос в другом месте, таким образом, я попробую здесь:
Есть ли некоторый путь (программный или другой) для получения списка БАНОК/КЛАССОВ, загруженных Приложением Classloader в точном порядке, они были загружены? Приложением Classloader я имею в виду classloader, который загружает приложение EAR в сервере приложений (WLS, БЫЛ, JBoss...), но очевидно, это относится к любому classloader.
Так, сделать вывод, что я хотел бы узнать, - список и порядок БАНОК, загруженных указанным classloader. Не отдельные классы, который достаточно легко узнать путем вызова classloader.getPackages (), но список файлов JAR, которые были загружены этим classloader.
Короткий ответ - нет. Загрузчики классов не обязаны раскрывать свою логику поиска.
Однако, если ваш экземпляр загрузчика классов является URLClassLoader или подклассом, тогда у вас есть доступ к списку файлов jar / каталогов с помощью метода getURLs ()
. Согласно документу для этого класса, эти URL-адреса будут просматриваться по порядку.
На практике, если вы пытаетесь выяснить, откуда загружается класс, ответ Стива , вероятно, будет более полезным.
Пробовали ли вы использовать параметр 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]