Często pojawiającym się problem (i bardzo irytującym przy okazji) podczas uruchamiania aplikacji napisanych w Javie jest brak jakiś klas potrzebnych do uruchomienia aplikacji. Ja się ostatnio spotkałem z takim problemem próbując testować jakąś aplikację, której autorów nikt od dawana nie widział.
Znam dwie metody na sprawdzenia, jak nazywa się plik JAR z daną klasą:
- użycie strony FindJAR.com
- użycie aplikacji JarSearch
Odszukanie pliku JAR przy użyciu strony internetowej
Przy użyciu wyszukiwarki FindJAR.com można w łatwy sposób sprawdzić, w jakich plikach znajduje się poszukiwana klasa. Wystarczy w polu wyszukiwania wpisać nazwę klasy (niekoniecznie nawet z pełną nazwą pakietu), ewentualnie wybrać dokładną nazwę klasy z prezentowanych odpowiedzi i już widać, w jakich plikach znajduje się dana klasa.
Zrobiłem test dla klasy javax.jws.WebParam
, wyniki można zobaczyć tutaj: http://www.findjar.com/class/javax/jws/WebParam.html:
Teraz pozostaje tylko pobrać plik i przynajmniej jedną klasę mamy już głowy ;).
Odszukanie pliku jar przy użyciu aplikacji
Do odszukania potrzebnych plików można także użyć aplikacji [cco]jarSearch[/cci]. W artykule Which jar contains my… można znaleźć dokładny opis możliwości aplikacji (większy niż przedstawiony tutaj) oraz link do źródeł.
Aplikacja przeszukuje podany katalog oraz podkatalogi w celu odnalezienia plików JAR i sprawdza czy znajduje się w nim podana klasa. Jeżeli znajdzie ją, to wyświetla odpowiednią informację.
Po pobraniu pliku zip jarSearchSrc.zip
z plikami źródłowymi, należy je skompilować:
Buildfile: build.xml
build:
[delete] Deleting directory /home/lukasz/install/java/jarSearch/classes
[mkdir] Created dir: /home/lukasz/install/java/jarSearch/classes
[javac] Compiling 4 source files to /home/lukasz/install/java/jarSearch/classes
BUILD SUCCESSFUL
Total time: 1 second
Aby użyć jarSearch należy z katalogu z plikiem build.xml
wydać komendę:
/jboss-as/client/jbossws-native-jaxws.jar: javax/jws/WebParam.class
1 entries found.
Directory searcher: http://www.isocra.com
Pierwszym parametrem jest katalog z który zawiera pliki jar, drugim natomiast nazwa szukanej klasy. W powyższym przykładzie widać, że został odnaleziony jeden plik, który zawiera poszukiwaną klasę jbossws-native-jaxws.jar
Widać, że efekty działania obu sposobów są trochę inne. Strona findJAR oferuje nam możliwość odnalezienia wybranej klasy i następnie ściągnięcia odpowiedniego pliku. Natomiast aplikacja jarSearch
pozwala po prostu sprawdzić w której bibliotece ukrywa się szukana klasa.