Как найти имя класса внутри кучи банок

У меня в моей системе много файлов jar, связанных с моим приложением.

Как я могу найти конкретный класс в этом большом количестве файлов jar?

Спасибо

Ответ 1

Если эти файлы jar находятся в пути сборки вашего проекта Eclipse:

Ctrl-Shift-T (для "Open Type", "type", как в "классе" ) вызывает окно поиска. Вы можете использовать CamelType (т.е. SB вместо StringBuilder).

Ответ 2

Вы должны иметь право щелкнуть правой кнопкой мыши по имени класса в исходном файле и выбрать один из подпунктов пункта контекстного меню Declarations, то есть щелкнуть правой кнопкой мыши по имени класса и выбрать Declarations/Project. Это будет искать проект для любых объявлений класса и отображать стандартное представление результатов поиска Eclipse. Я предполагаю, что у вас есть банка в виде библиотеки в проекте Eclipse.

Если вы хотите сделать это в файловой системе вместо этого, используйте цикл for для итерации по файлам JAR и используйте jar tf FILENAME, чтобы получить список файлов классов и канала, которые через grep или findstr ( в зависимости от вашей платформы). Если вы используете bash, что-то вроде следующего выполнит трюк:

bash-3.2$ for f in *.jar
do
  result=$(jar tf $f | grep '/DBObject.class$')
  [ -n "$result" ] && echo "$f contains $result"
done
mongodb-api-2.6.3.jar contains com/mongodb/DBObject.class
bash-3.2$ 

Вы можете придумать что-то подобное в Windows, используя цикл FOR в командной строке, но я не помню, если findstr правильно задает результат ERRORLEVEL. Следующее должно работать не совсем уверенно в синтаксисе:

C:\Directory\Containing\Jars> FOR %I IN (*.jar) DO @(
  FOR /F %J IN ('jar tf %I') DO ECHO "%J: %I"
) | FINDSTR /R /C:"/DBObject.class$"
mongodb-api-2.6.3.jar: com/mongodb/DBObject.class
C:\Directory\Containing\Jars>

Если я помню, я отредактирую это после того, как попаду на компьютер под Windows.