JAVA – Procurar Classe dentro de JAR em um diretório

Desenvolvi este programa para procurar classes dentro de JAR em uma determinada pasta.

package muller.martin;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;

public class ProcurarClasseJar {
public static void main(String[] args) {
try {

if(args.length == 2){

// Digite nome da classe com pacote
String encontrarNomePacote = "muller.martin.teste.SessaoSessionFacade";
// Digite Caminho dos libs JAR
String caminho = "c:\diretorio";


List listaJar = new ArrayList();

System.out.println("Pesquisando JAR:");
System.out.println("======================================================================");

File f = new File(caminho);
File[] arquivo = f.listFiles();
if(arquivo != null){
int quantidadeArquivo = arquivo.length;
for(int i = 0;i < quantidadeArquivo; i++){
String nomeArquivo = arquivo[i].getName().toLowerCase();
if(nomeArquivo.indexOf(".jar") != -1){
System.out.println("JAR: " + nomeArquivo);
JarFile arquivoJar = new JarFile(arquivo[i]);
Enumeration a = arquivoJar.entries();
while(a.hasMoreElements()){
String nomeJar = (String)a.nextElement().toString();
if(nomeJar.indexOf("svn-base") == -1){
if(nomeJar.indexOf(".class") != -1){
nomeJar = nomeJar.replaceAll(".class","");
nomeJar = nomeJar.replaceAll("/",".");
if(nomeJar.equals(encontrarNomePacote)){
listaJar.add("+ "+arquivo[i].getName());
listaJar.add("-> "+nomeJar);
}
}
}
}
}
}
}else{
System.out.println("ERRO: Diretorio invalido!");
}
System.out.println("======================================================================");

System.out.println("Resultado da pesquisa");
System.out.println("======================================================================");

for (Iterator iter = listaJar.iterator(); iter.hasNext();) {
String el = (String) iter.next();
System.out.println(el);
}



}

} catch (FileNotFoundException e) {
// TODO Bloco catch gerado automaticamente
e.printStackTrace();
}catch (IOException e) {
// TODO Bloco catch gerado automaticamente
e.printStackTrace();
}
}
}

Deixar uma resposta