In welchem Java Archiv war noch einmal die Klasse X? Ist die Klasse Y vielleicht noch in einem anderen JAR vorhanden? Hier kann eine rekursive Suche im Dateisystem helfen indem als kleines Hilfswerkzeug die folgende Shell-Funktion in ~/.bashrc eingefügt wird.
search_jars() {
search_dir=$1
search_term=$2
if [ -z "$search_term" -o -z "$search_dir" ];
then
echo "usage: search_jars [DIRECTORY] [SEARCH_TERM]"
return 1
fi
echo "Searching JARs which contain classes matching the search term '$search_term' in directory '$search_dir'..."
find $search_dir -name "*.jar" -type f -exec bash -c 'jar tvf "$1" | grep "$2"; if [ $? == 0 ]; then echo "Found in JAR $1"; fi' {} {} $search_term \;
}Das folgende Beispiel ruft search_jars auf der Konsole im aktuellen Verzeichnis auf und findet sämtliche Java Archive, die einen Klassennamen enthalten, welcher mit Locator.class endet.
>search_jars . Locator.class Searching JARs which contain classes matching the search term 'Locator.class' in directory '.'... 1613 Tue Aug 01 18:46:22 CEST 2011 com/sun/xml/bind/validator/DOMLocator.class 292 Tue Aug 01 18:46:22 CEST 2011 com/sun/xml/bind/validator/Locator.class 1024 Tue Aug 01 18:46:22 CEST 2011 com/sun/xml/bind/validator/SAXLocator.class Found in JAR ./jaxb1-impl.jar 336 Thu Mar 23 12:38:12 CET 2011 javax/xml/bind/ValidationEventLocator.class Found in JAR ./jaxb-api.jar 1608 Tue Aug 01 18:46:46 CEST 2011 com/sun/tools/xjc/reader/dtd/bindinfo/DOM4JLocator.class 1568 Mon Mar 28 12:21:54 CEST 2011 1.0/com/sun/tools/xjc/reader/dtd/bindinfo/DOM4JLocator.class Found in JAR ./jaxb-xjc.jar


