Есть ли способ определить, какие классы загружаются из банок во время выполнения?
Я уверен, что мы все были в JAR ад раньше. Я столкнулся с этой проблемой много проблем с поиском ClassNotFoundException
и NoClassDefFoundError
для проектов. Я бы хотел избежать поиска всех экземпляров класса в баночках и использования процесса устранения кода, вызывающего CNFE, чтобы найти виновника.
Будут ли какие-либо инструменты профилирования или управления предоставлять вам такую информацию?
Эта проблема очень раздражает, потому что мы должны иметь эту информацию во время загрузки класса. Должен быть способ добраться до него или записать его и найти, но я ничего не знаю, что сделаю это, не так ли?
Я знаю, что OSGi и версии пакетов/модулей нацелены на то, чтобы сделать это не проблемой... но, похоже, в ближайшее время он не уйдет.:)
ПРИМЕЧАНИЕ. Я обнаружил, что это question является подмножеством моего вопроса, связанного с классами, загружаемыми с версированных банок.
Обновление. В некоторой степени это объясняет стратегию поиска класса внутри jars (либо в текущем каталоге), либо в вашем M2_REPO. JarScan, сканировать все файлы JAR во всех подпапках для определенного класса
Обновление 2: также несколько связано, JBoss Tattletale