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.
\\ //

Comentários

Marcela disse…
Na verdade, sofro mais quando pego uma classe de alguém que aponta para classes que não tenho no class path, aí da-lhe Google para saber qual JAR tenho que baixar... :-/

Gostei do post, será muito útil!

beijos

Postagens mais visitadas deste blog

Muitos planos, pouca vida

Amigo Secreto pode ser legal

Teste de carga