Как бы вы нашли конкретное имя класса во множестве файлов JAR?
(Ищите фактическое имя класса, а не классы, которые ссылаются на него.)
Как бы вы нашли конкретное имя класса во множестве файлов JAR?
(Ищите фактическое имя класса, а не классы, которые ссылаются на него.)
Ответы:
Eclipse может это сделать, просто создайте (временный) проект и поместите свои библиотеки в путь к классам проектов. Тогда вы можете легко найти классы.
Другой инструмент, который приходит мне в голову, это Java Decompiler. Он может открыть много банок одновременно и помогает найти классы.
источник
Юникс
В Linux, другие варианты Unix, Git Bash в Windows или Cygwin, используют
jar
(илиunzip -v
)grep
иfind
.Ниже перечислены все файлы классов, которые соответствуют данному имени:
Если вам известен весь список Java-архивов, которые вы хотите найти, вы можете поместить их все в один каталог, используя (символические) ссылки.
Или используйте
find
(с учетом регистра), чтобы найти JAR-файл, который содержит заданное имя класса:Например, найти имя архива, содержащего
IdentityHashingStrategy
:Если JAR может быть где-нибудь в системе, и
locate
команда доступна:Вариант синтаксиса:
Windows
Откройте командную строку , перейдите в каталог (или каталог предков), содержащий файлы JAR, затем:
Вот как это работает:
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 .
источник
Некоторое время назад я написал программу только для этого: https://github.com/javalite/jar-explorer
источник
дает вам имя банки
дает вам пакет класса
источник
источник
jar -tvf
наunzip -l
.Чтобы найти банки, которые соответствуют заданной строке:
find . -name \*.jar -exec grep -l YOUR_CLASSNAME {} \;
источник
Я не знал об утилите для этого, когда столкнулся с этой проблемой, поэтому я написал следующее:
источник
Также есть две разные утилиты, которые называются «JarScan» и выполняют именно то, что вы просите: JarScan (inetfeedback.com) и JarScan (java.net).
источник
Скрипт user1207523 отлично работает для меня. Вот вариант, который ищет файлы jar с использованием find вместо простого расширения;
источник
Я всегда использовал это на Windows, и это работало исключительно хорошо.
findstr.exe стандартно поставляется с Windows и параметрами:
Надеюсь, это кому-нибудь поможет.
источник
bash script
Решение с использованиемunzip (zipinfo)
. Проверено наUbuntu 12
.источник
Чтобы найти все jar-файлы в данном каталоге для определенного класса, вы можете сделать это:
или, еще проще,
Вывод выглядит так:
Это очень быстро, потому что опция -F означает поиск строки Fixed, поэтому она не загружает механизм регулярных выражений для каждого вызова grep. Если вам нужно, вы всегда можете опустить опцию -F и использовать регулярные выражения.
источник
Я нашел этот новый способ
Так что здесь перечислены jar и класс, если он найден, если вы хотите, вы можете дать ls -1 * .jar или ввести xargs с помощью команды find HTH Someone.
источник
ClassFinder - это программа, предназначенная для решения этой проблемы. Он позволяет вам рекурсивно искать в каталогах и jar-файлах, чтобы найти все экземпляры класса, соответствующие шаблону. Он написан на Java, а не на Python. Он имеет приятный графический интерфейс, который делает его простым в использовании. И это работает быстро. Этот выпуск предварительно скомпилирован в работающем фляге, поэтому вам не нужно собирать его из исходного кода.
Загрузите это здесь: ClassFinder 1.0
источник
Проверьте JBoss Tattletale ; хотя я никогда не использовал это лично, кажется, это инструмент, который вам нужен.
источник
Просто используйте утилиту FindClassInJars, это простая программа Swing, но полезная. Вы можете проверить исходный код или загрузить файл jar по адресу http://code.google.com/p/find-class-in-jars/.
источник
Не уверен, почему скрипты здесь никогда не работали для меня. Это работает:
источник
Скрипт для поиска файла jar: find_jar.sh
Использование: ./find_jar.sh <каталог верхнего уровня, содержащий файлы jar> <имя класса для поиска>
Это похоже на большинство ответов, приведенных здесь. Но он выводит только имя файла, если grep что-то находит. Если вы хотите подавить вывод grep, вы можете перенаправить его в / dev / null, но я предпочитаю также просматривать вывод grep, чтобы я мог использовать частичные имена классов и найти правильный из списка показанных выходных данных.
Имя класса может быть как простым именем класса, например «String», так и полностью определенным именем, например «java.lang.String».
источник
Чтобы добавить еще один инструмент ... это очень простой и полезный инструмент для окон. Простой exe-файл, по которому вы щелкаете, дает ему каталог для поиска, имя класса, и он найдет jar-файл, содержащий этот класс. Да, это рекурсивно.
http://sourceforge.net/projects/jarfinder/
источник
Чтобы найти класс в папке (и подпапках) группы JAR-файлов: https://jarscan.com/
Пример:
источник
Вы можете найти класс в директории, полной jar-файлов с небольшой оболочкой:
Ищем класс "FooBar":
источник
Одна вещь, которую нужно добавить ко всему вышесказанному: если у вас нет доступного исполняемого файла jar (он поставляется с JDK, но не с JRE), вы можете использовать unzip (или WinZip, или что-то еще), чтобы выполнить то же самое.
источник
Самореклама бесстыдная, но вы можете попробовать утилиту, которую я написал: http://sourceforge.net/projects/zfind
Он поддерживает наиболее распространенные архивные / сжатые файлы (jar, zip, tar, tar.gz и т. Д.) И, в отличие от многих других jar / zip-искателей, поддерживает вложенные zip-файлы (zip в zip, jar в jar и т. Д.) До неограниченной глубины.
источник
Немного опоздал на вечеринку, но тем не менее ...
Я использую JarBrowser, чтобы найти, в каком jar присутствует определенный класс. Он имеет простой в использовании графический интерфейс, который позволяет просматривать содержимое всех банок по выбранному пути.
источник
Следующий скрипт поможет вам
источник
Этот хорошо работает в MinGW (среда Windows Bash) ~ Gitbash
Поместите эту функцию в ваш файл .bashrc в вашем домашнем каталоге:
источник
Grepj - это утилита командной строки для поиска классов в файлах jar. Я автор утилиты.
Вы можете запустить утилиту как
grepj package.Class my1.jar my2.war my3.ear
Могут быть предоставлены несколько файлов jar, ear, war. Для расширенного использования используйте find, чтобы предоставить список банок для поиска.
источник
Проверьте этот плагин на наличие затмения, которое может выполнить работу, которую вы ищете.
https://marketplace.eclipse.org/content/jarchiveexplorer
источник
В среде Linux вы можете сделать следующее:
куда name - это имя файла класса, который вы просматриваете внутри jar- файлов, распределенных по иерархии каталогов с корнем в base_dir .
источник
Вы можете использовать
locate
иgrep
:Убедитесь, что вы запускаете
updatedb
перед использованиемlocate
.источник