Java: Как узнать, какой файл jar использовать, используя имя класса?
Учитывая класс, org.eclipse.ui.views.navigator.ResourceNavigator, например, как узнать, какой файл jar для использовать? Я знаю это в org.eclipse.ui.ide, но как бы это узнать?
Изменить: Спасибо всем, кто ответил. Как и многие вещи, кажется, что есть несколько способов обмануть этого кота. Я хочу, чтобы javadoc содержал эту информацию. До сих пор существуют различные методы:
-
Без Интернета, Eclipse или NetBeans:
for f in `find . -name '*.jar'`; do echo $f && jar tvf $f | grep -i $1; done
-
Если вы хотите узнать локально с помощью Eclipse:
-
Если вы хотите узнать из Интернета или у вас еще нет банки:
Ответы
Ответ 1
У вас также есть этот плагин eclipse: jarclassfinder
Пользователь вводит имя не найденного класса (или имя класса, к которому должен обращаться проект Java). Плагин будет искать выбранный каталог (и подкаталоги) для файлов JAR, содержащих этот класс.
Все результаты отображаются в таблице в пользовательском представлении. Затем пользователь может просмотреть эту таблицу и выбрать файл JAR для добавления в свой путь построения Java-проекта. Затем пользователь щелкает правой кнопкой мыши по записи в таблице и в контекстном меню выбирает путь сборки, к которому его следует добавить.
Обновление 2013, как я упоминал в "поиске через .jar файлы eclipse", он больше не поддерживается, а альтернативы разрежены.
Как sunleo комментарии ниже:
с Eclipse, Ctfl + Shift + T остается самой простой альтернативой для поиска типа
(с именем баннера, отображаемым в строке состояния).
user862268 комментарии ниже:
Для mac это cmd + Shift + T в Eclipse, чтобы найти класс и ассоциированную банку.
Ответ 2
Если у вас есть jar в пути к пути/пути к вашему классу, нажмите CTRL-SHIFT-T и введите имя... банку будет отображаться внизу.
Если у вас нет класса в пути сборки
а) собрал фиктивный проект, содержащий все банки
б) Я думаю, что есть плагин для поиска банок из IBM Alphaworks (но это может быть отчасти устаревшим).
Ответ 3
перейти для Ctrl + Shift + T.
Появится диалоговое окно "Открыть тип", в которое вы вводите имя класса. после этого отобразятся идентификатор пакета и пункт назначения контейнера.
Ответ 4
Чтобы ответить на вопрос, нет реального способа узнать, какую банку использовать. Различные версии будут иметь потенциально другое поведение.
Когда дело доходит до определения флага, содержащего данный класс, я использую:
for f in `find . -name '*.jar'`; do echo $f && jar tvf $f | grep -i $1; done
Здесь будет выделен любой jar, содержащий имя класса, переданное как параметр в любой подпапке.
Еще один хороший способ найти класс - использовать поиск репозитория maven.
Ответ 5
Для меня это прекрасно работает:
find * -type f -name '*.jar' -exec grep -l 'TestClass.class' '{}' \;
Привет
Ответ 6
Используйте это: плагин netbeans
Или jarFinder сервис
Ответ 7
**shell> find . -name "*.jar" | xargs -i -t \jar tvf {} | grep [TheClassNameYouAreLookingFor]**
Например, если вы ищете класс LogFactory.class в списке баннеров apache commons, ниже команда будет работать
shell> find apache-commons/ -name "*.jar" | xargs -i -t \jar tvf {} | grep LogFactory.class
jar tvf apache-commons/commons-beanutils-1.7.0.jar
jar tvf apache-commons/commons-fileupload-1.2.1.jar
jar tvf apache-commons/commons-lang-2.3.jar
**jar tvf apache-commons/commons-logging-1.1.jar**
**21140 Tue May 09 23:08:12 EDT 2006 org/apache/commons/logging/LogFactory.class**
jar tvf apache-commons/commons-net-1.3.0.jar
Вышеприведенный результат указывает, что совпадение - commons-logging-1.1.jar
Ответ 8
Использовать локатор класса /JAR:
http://classlocator.sourceforge.net/
[EDIT] Это не очевидно даже из документов ClassLocator (!), но, похоже, это плагин Eclipse.
Ответ 9
Я использую FindJar.com. В нем перечислены все известные пакеты, содержащие любой класс! Это невероятно полезно.
Ответ 10
Обычно я делаю jar -vtf foo.jar
, чтобы получить список всех файлов классов.
Не самый практичный способ, но удобный. Конечно, вы можете комбинировать результат с grep.
Ответ 11
В Intellij IDEA вы просто ctrl-click по имени класса, и вы будете перемещены в псевдо-исходный код этого класса, а заголовок окна будет выглядеть как c:\path\to\lib.jar!\com\something\ClassName.class
Ответ 12
Я не уверен, что я действительно понимаю вопрос, но если вы хотите проверить, что ваш класс действительно находится в банке, вы всегда можете просмотреть сам банку, и для этого вам не нужен Eclipse плагинов или специализированного внешнего приложения.
Файлы JAR (Java ARchive) - это не более чем ZIP файлы. Все, что вам нужно сделать, это распаковать банку или даже просмотреть ее с помощью приложения для чтения в формате zip. Например, в Windows XP это встроено в операционную систему. Как удобно.
Надеюсь, это помогло...
Yuval = 8 -)
Ответ 13
Также проверьте http://javacio.us/.
Ответ 14
Плагин IntelliJ IDEA (класс Hunter)
Ответ 15
Вы также можете попробовать Jarvana найти файлы jar для определенного класса.
Ответ 16
Я проголосую за CTRL-SHIFT-T, потому что он уже включен в Eclipse. Я фактически сбросил jarclassfinder.jar в директории плагинов внутри установки eclipse, но до сих пор не смог найти плагин в графическом интерфейсе Eclipse
Ответ 17
если вы скажете eclipse открыть объявление (F3) или реализацию (Navigate- > Open Implementation), и вы попадете в не редактируемое окно редактирования, вы увидите путь к файлу jar, щелкнув правой кнопкой мыши на редакторе окно и выбор "показать в сухарях"
my find unix основан:
find . -name "*.jar" -print -exec jar -tf {} \; >outputfile
отредактируйте выходной файл, чтобы найти то, что вы хотите (вместо grep)