Como encontrar uma classe ?
![]()
Nesta dica mostrarei duas dicas que me ajudam muito no dia a dia.
1) Encontrar em qual biblioteca está uma classe
Existem diversas situações onde é necessário encontrar em qual biblioteca encontra-se uma determinada classe Java.
Em 2004 coloquei uma dica de um script bash que resolve isso. Esse script mostra todos os arquivos que ele vasculhou para procurar a classe, mesmo que a classe não estivesse no arquivo, ele seria mostrada mesmo assim, causando desperdício de tempo e de tela.
Então aproveitei um tempinho e arrumei o script, onde é mostrado apenas o arquivo que contém a classe procurada e ainda arrumei a impressão da tela.
#!/bin/sh
usage="Uso: findJavaClass directory ClassName "
if [ $# -lt 2 ] ; then
echo $usage
exit 1
fi
if [ -d $1 ] ; then
FIND_CMD="find $1"
else
echo "Diretorio nao existe"
exit 1
fi
$FIND_CMD -name \*.jar | while read jar_file ;
do
found_class=`unzip -l $jar_file | awk '{print $4}' | grep $2`
num_classes=`echo $found_class | wc -c`
if [ $num_classes -gt 1 ] ; then
echo ""
echo "Arquivo:"
echo " $jar_file"
echo "Classes:"
echo $found_class | sed 's/\ /\n/g' | sed 's/^.*/\ \ \ \ &/g'
fi
done
E o um resultado como exemplo:
$ findJavaClass ~/javaSoftware/netbeans-5.5.1/ide7/modules/ext/jaxws21/ Task
Arquivo:
/home/claudio/javaSoftware/netbeans-5.5.1/ide7/modules/ext/jaxws21/http.jar
Classes:
sun/net/httpserver/ServerImpl$ServerTimerTask.class
Arquivo:
/home/claudio/javaSoftware/netbeans-5.5.1/ide7/modules/ext/jaxws21/jaxb-xjc.jar
Classes:
com/sun/istack/tools/ProtectedTask$AntElement.class
com/sun/istack/tools/ProtectedTask.class
com/sun/tools/jxc/AptBasedTask$1.class
com/sun/tools/jxc/AptBasedTask$AptAdapter.class
com/sun/tools/jxc/AptBasedTask$InternalAptAdapter.class
2) Como mostrar o conteúdo de um arquivo que está compactado ?
Quantas vezes por dia você descompacta um arquivo só para olhar o conteúdo do manifest ?
Então segue mais uma dica, onde não é necessário descompactar o arquivo.
$ unzip -c /home/claudio/javaSoftware/netbeans-5.5.1/ide7/modules/ext/jaxws21/jaxb-xjc.jar META-INF/MANIFEST.MF
Deixe um comentário