Como carregar classes em tempo de execução de uma pasta ou JAR?

Eu estou tentando fazer uma ferramenta Java que irá analisar a estrutura de um aplicativo Java e fornecer algumas informações significativas. Para fazer isso, eu preciso ser capaz de escanear todos os arquivos .class do local do projeto (JAR / WAR ou apenas uma pasta) e usar a reflexão para ler sobre seus métodos. Isso está provando ser quase impossível.

Eu posso encontrar muitas soluções baseadas em URLClassloader que me permitem carregar classes específicas de um diretório / arquivo, mas nenhuma que me permita carregar classes sem ter qualquer informação sobre o nome da classe ou estrutura de pacotes.

EDIT: Acho que expressei isso mal. Meu problema não é que eu não possa obter todos os arquivos de classe, eu posso fazer isso com recursão etc. e localizá-los corretamente. Meu problema é obter um objeto de classe para cada arquivo de classe.

questionAnswers(3)

yourAnswerToTheQuestion