Jak znaleźć konkretną nazwę klasy w wielu plikach jar?
(Szukanie rzeczywistej nazwy klasy, a nie klas, które się do niej odwołują).
Jak znaleźć konkretną nazwę klasy w wielu plikach jar?
(Szukanie rzeczywistej nazwy klasy, a nie klas, które się do niej odwołują).
Odpowiedzi:
Eclipse może to zrobić, po prostu stwórz (tymczasowy) projekt i umieść swoje biblioteki w ścieżce klas projektów. Następnie możesz łatwo znaleźć zajęcia.
Innym narzędziem, które przychodzi mi do głowy, jest dekompilator Java. Może otwierać wiele słoików naraz i pomaga również znaleźć klasy.
źródło
Unix
W systemie Linux inne warianty Uniksa, Git Bash w systemie Windows lub Cygwin, używaj poleceń
jar
(lubunzip -v
)grep
ifind
.Poniżej wymieniono wszystkie pliki klas pasujące do podanej nazwy:
Jeśli znasz całą listę archiwów Java, które chcesz przeszukać, możesz umieścić je wszystkie w tym samym katalogu, używając (symbolicznych) łączy.
Lub użyj
find
(rozróżniaj wielkość liter), aby znaleźć plik JAR zawierający daną nazwę klasy:Na przykład, aby znaleźć nazwę archiwum zawierającego
IdentityHashingStrategy
:Jeśli plik JAR może być w dowolnym miejscu w systemie, a
locate
polecenie jest dostępne:Wariacja składniowa:
Windows
Otwórz wiersz polecenia , przejdź do katalogu (lub katalogu nadrzędnego) zawierającego pliki JAR, a następnie:
Oto jak to działa:
for /R %G in (*.jar) do
- zapętla wszystkie pliki JAR, rekurencyjnie przeglądając katalogi; zapisz nazwę pliku w%G
.@jar -tvf "%G" |
- uruchom polecenie Java Archive, aby wyświetlić wszystkie nazwy plików w danym archiwum i zapisać wyniki na standardowym wyjściu; że@
tłumi symbol druku wywołania danego polecenia.find "ClassName" > NUL
- wyszukuje standardowe dane wejściowe, wyprowadzane z danych wyjściowych polecenia jar, dla podanej nazwy klasy; ustawi sięERRORLEVEL
na 1 i tam jest dopasowanie (w przeciwnym razie 0).&& echo %G
- iffERRORLEVEL
jest niezerowy, wpisz nazwę pliku archiwum Java na standardowe wyjście (konsolę).Sieć
Użyj wyszukiwarki, która skanuje pliki JAR .
źródło
jakiś czas temu napisałem program tylko do tego: https://github.com/javalite/jar-explorer
źródło
daje nazwę słoika
daje ci pakiet klasy
źródło
źródło
jar -tvf
gounzip -l
.Aby zlokalizować słoiki pasujące do podanego ciągu:
find . -name \*.jar -exec grep -l YOUR_CLASSNAME {} \;
źródło
Kiedy natknąłem się na ten problem, nie wiedziałem o użytecznym narzędziu, dlatego napisałem:
źródło
Istnieją również dwa różne narzędzia zwane „JarScan”, które wykonują dokładnie to, o co prosisz: JarScan (inetfeedback.com) i JarScan (java.net)
źródło
Skrypt użytkownika 1207523 działa dla mnie dobrze. Oto wariant, który wyszukuje pliki jar w sposób rekurencyjny, używając find zamiast zwykłego rozszerzenia;
źródło
Zawsze używałem tego w systemie Windows i działał wyjątkowo dobrze.
findstr.exe jest standardowo wyposażony w system Windows i parametry:
Mam nadzieję, że to komuś pomoże.
źródło
bash script
Rozwiązanie wykorzystująceunzip (zipinfo)
. Testowane naUbuntu 12
.źródło
Aby wyszukać wszystkie pliki jar w danym katalogu w poszukiwaniu konkretnej klasy, możesz to zrobić:
lub nawet prościej
Dane wyjściowe wyglądają tak:
Jest to bardzo szybkie, ponieważ opcja -F oznacza wyszukiwanie Stałego ciągu, więc nie ładuje silnika regex dla każdego wywołania grep. W razie potrzeby zawsze możesz pominąć opcję -F i użyć wyrażeń regularnych.
źródło
Znalazłem ten nowy sposób
Więc to pokazuje jar i klasę, jeśli zostanie znaleziona, jeśli chcesz, możesz podać ls -1 * .jar lub dane wejściowe do xargs za pomocą komendy find HTH Someone.
źródło
ClassFinder to program zaprojektowany w celu rozwiązania tego problemu. Pozwala przeszukiwać rekurencyjnie katalogi i pliki jar, aby znaleźć wszystkie wystąpienia klasy pasujące do wzorca. Jest napisany w Javie, a nie w Pythonie. Ma ładny interfejs graficzny, który ułatwia obsługę. I działa szybko. To wydanie jest wstępnie skompilowane w uruchamialnym słoju, więc nie musisz budować go ze źródła.
Pobierz tutaj: ClassFinder 1.0
źródło
Sprawdź JBoss Tattletale ; chociaż nigdy nie korzystałem z niego osobiście, wydaje się, że jest to narzędzie, którego potrzebujesz.
źródło
Wystarczy użyć FindClassInJars, jest to prosty program swingowy, ale przydatny. Możesz sprawdzić kod źródłowy lub pobrać plik jar na http://code.google.com/p/find-class-in-jars/
źródło
Nie jestem pewien, dlaczego skrypty tutaj nigdy tak naprawdę dla mnie nie działały. To działa:
źródło
Skrypt do znalezienia pliku jar: find_jar.sh
Zastosowanie: ./find_jar.sh <katalog najwyższego poziomu zawierający pliki jar> <Nazwa klasy do znalezienia>
Jest to podobne do większości podanych tutaj odpowiedzi. Ale wyświetla tylko nazwę pliku, jeśli grep coś znajdzie. Jeśli chcesz wyłączyć dane wyjściowe grep, możesz przekierować je do / dev / null, ale wolę także zobaczyć dane wyjściowe grep, aby móc użyć częściowych nazw klas i znaleźć właściwą z wyświetlonej listy wyników.
Nazwą klasy może być zarówno prosta nazwa klasy, jak „String” lub pełna nazwa, taka jak „java.lang.String”
źródło
Aby dodać kolejne narzędzie ... jest to bardzo proste i przydatne narzędzie dla systemu Windows. Prosty plik exe, na który klikniesz, nadaj mu katalog do przeszukania, nazwę klasy, a znajdzie plik jar zawierający tę klasę. Tak, to rekurencyjne.
http://sourceforge.net/projects/jarfinder/
źródło
Aby znaleźć klasę w folderze (i podfolderach) kilka plików JAR: https://jarscan.com/
Przykład:
źródło
Możesz znaleźć klasę w katalogu pełnym słoików z odrobiną powłoki:
Poszukuję klasy „FooBar”:
źródło
Jedną z rzeczy do dodania do wszystkich powyższych: jeśli nie masz dostępnego pliku wykonywalnego jar (jest dostarczany z JDK, ale nie z JRE), możesz użyć unzip (lub WinZip lub cokolwiek innego), aby osiągnąć to samo.
źródło
bezwstydna autopromocja, ale możesz wypróbować narzędzie, które napisałem: http://sourceforge.net/projects/zfind
Obsługuje większość popularnych plików archiwalnych / skompresowanych (jar, zip, tar, tar.gz itp.) I, w przeciwieństwie do wielu innych wyszukiwarek jar / zip, obsługuje zagnieżdżone pliki zip (zip w zip, jar jar w jar itp.) Do nieograniczonej głębokości.
źródło
Trochę późno na imprezę, ale jednak ...
Korzystam z JarBrowser, aby znaleźć, w którym słoju znajduje się dana klasa. Ma łatwy w użyciu interfejs GUI, który pozwala przeglądać zawartość wszystkich słoików na wybranej ścieżce.
źródło
Poniższy skrypt pomoże ci
źródło
Ten działa dobrze w MinGW (środowisko Windows bash) ~ gitbash
Umieść tę funkcję w pliku .bashrc w katalogu HOME:
źródło
Grepj to narzędzie wiersza polecenia do wyszukiwania klas w plikach jar. Jestem autorem narzędzia.
Możesz uruchomić narzędzie jak
grepj package.Class my1.jar my2.war my3.ear
Można podać wiele plików jar, ucha i wojennych. Dla zaawansowanego użycia użyj find, aby podać listę słoików do przeszukania.
źródło
Sprawdź tę wtyczkę pod kątem zaćmienia, które może wykonać zadanie, którego szukasz.
https://marketplace.eclipse.org/content/jarchiveexplorer
źródło
W środowisku Linux możesz wykonać następujące czynności:
Gdzie nazwa jest nazwą pliku klasy, który przeglądasz w słoikach rozmieszczonych w hierarchii katalogów zrootowanych w katalogu katalog_podstawowy .
źródło
Możesz użyć
locate
igrep
:Upewnij się, że biegniesz
updatedb
przed użyciemlocate
.źródło