¿Cómo cargar Clases en tiempo de ejecución desde una carpeta o JAR?

Estoy tratando de hacer una herramienta Java que escanee la estructura de una aplicación Java y proporcione información significativa. Para hacer esto, necesito poder escanear todos los archivos .class desde 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.

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 información sobre el nombre de la 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 hacer eso con recursión, etc. y ubicarlos correctamente. Mi problema es obtener un objeto de clase para cada archivo de clase.

Respuestas a la pregunta(3)

Su respuesta a la pregunta