¿Hay alguna forma de determinar qué clases se cargan desde qué jar en el tiempo de ejecución?¿Cómo explorar qué clases se cargan desde qué JAR?
Estoy seguro de que todos hemos estado en JAR hell antes. Me he encontrado con este problema con mucha resolución de problemas ClassNotFoundException
sy NoClassDefFoundError
s en proyectos. Me gustaría evitar encontrar todas las instancias de una clase en jarras y usar el proceso de eliminación en el código que hace que un CNFE encuentre al culpable.
¿Algún perfil o herramientas de administración le dará este tipo de información?
Este problema es súper molesto simplemente porque deberíamos tener esta información en el momento en que se carga la clase. Tiene que haber una manera de llegar a él, o grabarlo y encontrarlo, sin embargo, no sé nada de lo que hará esto, ¿verdad?
Sé que OSGi y los paquetes/módulos versionados apuntan a que esto no sea un problema ... pero parece que no va a desaparecer en el corto plazo. :)
NOTA: Encontré este question es un subconjunto de mi pregunta relacionada con las clases cargadas desde los archivos versionados.
Actualización: Algo relacionado, esta publicación explica una estrategia para buscar una clase dentro de jar (ya sea bajo el directorio actual) o en su M2_REPO. JarScan, scan all JAR files in all subfolders for specific class
Actualización 2: También de alguna manera relacionado, JBoss Tattletale
Jason Day está en lo cierto, esto básicamente un duplicado de una pregunta que no pidió hace mucho tiempo. http://stackoverflow.com/questions/779650/where-on-the-file-system-was-my-java-class-loaded-from – shsteimer