Em qual JAR fica essa fu*&% classe?
Pois é, um perguntinha tão básica e acabei vindo fazer um post só pra registrar isso porque simplesmente é chato encontrar uma resposta. Claro, não quero saber em quais JAR está a classe mas sim, durante a execução de um aplicativo, qual JAR foi utilizado para a carga da classe. Isso é importante em muitas situações como erros de "Class Casting" por conta de hierarquia incorreta de Classloaders etc. Além disso, a solução que encontrei é simples e elegante. Indo direto para um exemplo, o JAR onde está a classe String, que já sabemos, ou deveríamos saber, ser a rt.jar, pode ser encontrada através de
java.lang.ClassLoader.getSystemResource("java/lang/String.class");
onde java/lang/String.class nada mais é que o caminho da classe java.lang.String.
Simples assim!
Achei esse código no excelente artigo de Kohsuke Kawaguchi, "HOW-IT-WORKS: Running JAXB/WS 2.1 tools on JDK 6".
Vida longa e prosperidade.
\\ //
java.lang.ClassLoader.getSystemResource("java/lang/String.class");
onde java/lang/String.class nada mais é que o caminho da classe java.lang.String.
Simples assim!
Achei esse código no excelente artigo de Kohsuke Kawaguchi, "HOW-IT-WORKS: Running JAXB/WS 2.1 tools on JDK 6".
Vida longa e prosperidade.
\\ //
Comentários
Gostei do post, será muito útil!
beijos