Unix
Используйте команды jar
(или unzip -v
), grep
и find
.
Например, в следующем списке перечислены все файлы классов, которыесоответствует заданному имени:
for i in *.jar; do jar -tvf "$i" | grep -Hsi ClassName && echo "$i"; done
Если вам известен весь список Java-архивов, которые вы хотите найти, вы можете поместить их все в один каталог, используя (символические) ссылки.
Илииспользуйте find
(чувствительно к регистру), чтобы найти файл JAR, который содержит заданное имя класса:
find path/to/libs -name '*.jar' -exec grep -Hls ClassName {} \;
Например, чтобы найти имя архива, содержащего IdentityHashingStrategy
:
$ find . -name "*.jar" -exec grep -Hsli IdentityHashingStrategy {} \;
./trove-3.0.3.jar
Если JAR может быть в любом месте в системе и доступна команда locate
:
for i in $(locate "*.jar");
do echo $i; jar -tvf $i | grep -Hsi ClassName;
done
Windows
Открыть командная строка , перейдите в каталог (или каталог предков), содержащий файлы JAR, затем:
for /R %G in (*.jar) do @jar -tvf "%G" | find "ClassName" > NUL && echo %G
Вот как это работает:
for /R %G in (*.jar) do
- перебрать все файлы JAR, рекурсивно обходя каталоги;сохранить имя файла в% G. @jar -tvf "%G" |
- запустить команду Java Archive, чтобы получить список всех имен файлов в данном архиве и записать результаты в стандартный вывод;символ @
подавляет печать вызова команды. find "ClassName" > NUL
- поиск стандартного ввода, переданного по выводу команды jar, для заданного имени класса;это установит ERRORLEVEL
в 1, если есть совпадение (в противном случае 0). && echo %G
- если ERRORLEVEL
не равно нулю, запишите имя файла архива Java в стандартный вывод (консоль).
Web
Используйте поисковую систему , которая сканирует JAR-файлы .