Estoy tratando de hacer una herramienta Java que escanee la estructura de una aplicación Java y brinde información significativa. Para hacer esto, necesito poder escanear todos los archivos .class de la ubicación del proyecto (JAR/WAR o simplemente una carpeta) y usar la reflexión para leer sobre sus métodos. Esto está demostrando ser casi imposible.¿Cómo cargar clases en tiempo de ejecución desde una carpeta o JAR?
Puedo encontrar muchas soluciones basadas en URLClassloader que me permiten cargar clases específicas de un directorio/archivo, pero ninguna que me permita cargar clases sin tener ninguna información sobre el nombre de clase o la estructura del paquete.
EDITAR: Creo que lo expresé mal. Mi problema no es que no pueda obtener todos los archivos de clase, puedo hacerlo con recursividad, etc. y ubicarlos correctamente. Mi problema es obtener un objeto Class para cada archivo de clase.
¿Cómo se puede cargar una clase ignorando su nombre completo? No creo que esto sea posible. –
Las respuestas a continuación le permitirán ubicar los archivos de la clase pero, dependiendo del tamaño de su proyecto, podría valer la pena usar [asm] (http://asm.ow2.org/) o [javassist] (http: // www.csg.ci.iu-tokyo.ac.jp/~chiba/javassist/). Esto le permitirá analizar las clases sin cargarlas todas en la memoria. –