El tema de cargar clases dinámicamente en el classpath es algo que evito al máximo por que jugar con classloaders es mucho jugar y mientras pueda prefiero evitarlo
. Ahora mismo no tengo ningún caso en que eso me haga falta ya que normalmente tengo todas en el classpath y e instancio la que hace falta, pero ya están todas.
Otros casos donde necesito definir clases dinámicamente lo soluciono con lenguajes de Scripting, como Groovy, y por último, en caso de tener que ponerme a cargar clases dinámicamente, supongo que tiraría por un modelo "sencillo" haciendo un URLClassLoader propio etc. o un modelo complejo usando OSGI.
El problema de los classloaders es que si intentas usar una clase desde un classloader diferente del que se cargo, y sin relacion padre-hijo entre ellos, puede que te la cargue otra vez (si está en el classpath) y te diga que las clases no son iguales. O que te diga ClassNotFound si no está en el classpath.
Además si no liberas bien las referencias es un caso habitual de Memory Leaks etc.
Por eso lo evito
.
Creo que el problema debe estar en la forma en que se cargan las clases y como reflection intenta saber que clases se usan, ya que debe cargarlas por otro lado y por eso te dice que no coinciden.
S!