Próbuję utworzyć narzędzie Java, które przeskanuje strukturę aplikacji Java i udostępni pewne istotne informacje. Aby to zrobić, muszę móc przeskanować wszystkie pliki .class z lokalizacji projektu (JAR/WAR lub tylko folder) i użyć refleksji, aby przeczytać o ich metodach. To okazuje się prawie niemożliwe.Jak załadować klasy w czasie wykonywania z folderu lub pliku JAR?
Mogę znaleźć wiele rozwiązań opartych na URLClassloader, które pozwalają mi ładować określone klasy z katalogu/archiwum, ale żadne, które pozwolą mi ładować klasy bez żadnych informacji o nazwie klasy lub strukturze pakietu.
EDYCJA: Myślę, że źle to sformułowałem. Moim problemem nie jest to, że nie mogę uzyskać wszystkich plików klas, mogę to zrobić z rekursją itp. I zlokalizować je poprawnie. Mój problem polega na uzyskaniu obiektu klasy dla każdego pliku klasy.
Jak wczytać klasę ignorując jej pełną nazwę? Nie sądzę, że to możliwe. –
Poniższe odpowiedzi pozwolą Ci zlokalizować pliki klas, ale w zależności od rozmiaru twojego projektu warto użyć [asm] (http://asm.ow2.org/) lub [javassist] (http: // www.csg.ci.iu-tokyo.ac.jp/~chiba/javassist/). Pozwoli to ci analizować klasy bez ładowania ich wszystkich do pamięci. –