Я пытаюсь создать инструмент Java, который сканирует структуру приложения Java и предоставит значимую информацию. Для этого мне нужно иметь возможность сканировать все файлы .class из местоположения проекта (JAR/WAR или только папку) и использовать рефлексию для чтения своих методов. Это оказывается почти невозможным.Как загрузить классы во время выполнения из папки или JAR?
Я могу найти множество решений на основе URLClassloader, которые позволяют загружать определенные классы из каталога/архива, но ни один из них не позволит мне загружать классы без какой-либо информации о имени класса или структуре пакета.
EDIT: Я думаю, что я сформулировал это плохо. Моя проблема не в том, что я не могу получить все файлы классов, я могу сделать это с рекурсией и т. Д. И найти их правильно. Моя проблема - получить объект Class для каждого файла класса.
Как вы можете загрузить класс, игнорирующий его полное имя? Я не думаю, что это возможно. –
Ответы ниже помогут вам найти файлы классов, но, в зависимости от размера вашего проекта, возможно, стоит использовать [asm] (http://asm.ow2.org/) или [javassist] (http: // www.csg.ci.iu-tokyo.ac.jp/~chiba/javassist/). Это позволит вам анализировать классы, не загружая их все в память. –