Um problema que sempre atormentou minha vida foi tentar descobrir em qual JAR está uma determinada classe. Até o momento eu recorria ao http://www.findjar.com, http://www.jarfinder.com/ ou Google. O problema é que nem sempre o JAR é encontrado ou está em versão errada. Para resolver esse tormento resolvi criar um programinha que consiste em buscar à partir de um caminho todos os arquivos JAR e procurar dentro dele à classe que eu quero.
Sobre: Thiago Galbiatti Vespa
Thiago Galbiatti Vespa é mestre em Ciências da Computação e Matemática Computacional pela USP e bacharel em Ciências da Computação pela UNESP. Coordenador de projetos do JavaNoroeste, membro do JCP (Java Community Process), consultor Oracle, arquiteto de software de empresas de médio e grande porte, palestrante de vários eventos e colaborador de projetos open source. Possui as certificações: Oracle Certified Master, Java EE 5 Enterprise Architect – Step 1, 2 and 3; Oracle WebCenter Portal 11g Certified Implementation Specialist; Oracle Service Oriented Architecture Infrastructure Implementation Certified Expert; Oracle Certified Professional, Java EE 5 Web Services Developer; Oracle Certified Expert, NetBeans Integrated Development Environment 6.1 Programmer; Oracle Certified Professional, Java Programmer; Oracle Certified Associate, Java SE 5/SE 6
Logging In...
Profile cancel
Last reply was 03/01/2013
Boa :).
Um problema parecido (mas não idêntico) que volta e meia aparece é o seguinte: Descobrir o jar de uma classe a qual você tem acesso em runtime.
Pode parecer estranho mas em um Application Server com trocentas shared libraries, não é incomum você usar uma classe sem ter a menor idéia da sua proveniência.
Eis uma solução:
public static URL getLocation(Class clazz) {
return clazz.getProtectionDomain().getCodeSource().getLocation();
}
public static URL getLocation(String className) throws ClassNotFoundException {
return getLocation(Class.forName(className));
}
Exemplo de uso:
System.out.println(getLocation(EntityManager.class));
System.out.println(getLocation("org.apache.commons.lang.builder.ReflectionToStringBuilder"));
Saída do exemplo para um projeto Maven na minha máquina:
file:/home/anthony/.m2/repository/javax/persistence/javax.persistence/2.0-SNAPSHOT/javax.persistence-2.0-SNAPSHOT.jar
file:/home/anthony/.m2/repository/commons-lang/commons-lang/2.6/commons-lang-2.6.jar
[...] utilizando uma classe com versão diferente do quartz-2.x. Se você utilizar o utilitário descrito nesse post na pasta de instalação do WebLogic com SOA Suite, irá verificar que o WebLogic utiliza outra [...]