Java: Как узнать, какой файл jar использовать, используя имя classа?

Например, для classа, org.eclipse.ui.views.navigator.ResourceNavigator , как узнать, какой файл jar использовать? Я знаю, что это в org.eclipse.ui.ide, но как бы я это узнал?

Редактировать : Спасибо всем, кто ответил. Как и многие вещи, кажется, что есть несколько способов обмануть этого кота. Я хочу, чтобы javadoc содержал эту информацию. До сих пор существуют разные методы:

  1. Без Интернета, Eclipse или NetBeans:

    for f in `find . -name '*.jar'`; do echo $f && jar tvf $f | grep -i $1; done 
  2. Если вы хотите узнать локально с помощью Eclipse:

    • JAR Class Finder Plug-in
    • Плагин локатора classов
  3. Если вы хотите узнать из Интернета или у вас еще нет банки:

    • jarFinder
    • findjar.com

У вас также есть этот плагин eclipse: jarclassfinder

Пользователь вводит имя не найденного classа (или имя classа, к которому должен обращаться проект Java). Плагин будет искать выбранный каталог (и подкаталоги) для файлов JAR, содержащих этот class.

Все результаты отображаются в таблице в пользовательском представлении. Затем пользователь может просмотреть эту таблицу и выбрать JAR-файл для добавления в свой путь построения Java-проекта. Затем пользователь щелкает правой кнопкой мыши по записи в таблице и в контекстном меню выбирает путь сборки, к которому его следует добавить.


Обновление 2013 года, как я упоминаю в « поиске через .jar-файлы eclipse », он больше не поддерживается, а альтернативы разрежены.

Как Sunleo комментарии ниже :

с Eclipse, Ctfl + Shift + T остается самой простой альтернативой для поиска типа
(с именем баннера, отображаемым в строке состояния).


user862268 комментарии ниже :

Для mac это cmd + shift + T в Eclipse, чтобы найти class и ассоциированную банку.

Если у вас есть jar в пути к пути / пути к вашему пути, нажмите CTRL-SHIFT-T и введите имя … банку будет отображаться внизу.

Если у вас нет classа в вашем пути сборки a) скомпонован фиктивный проект, содержащий все банки. B) Я думаю, что есть плагин для поиска банок из IBM Alphaworks (но это может быть отчасти устаревшим)

перейдите для Ctrl + Shift + T в Eclipse IDE

Появится диалоговое окно «Открыть тип», в которое вы вводите имя classа. после этого отобразятся идентификатор пакета и пункт назначения контейнера.

Чтобы ответить на вопрос, нет реального способа узнать, какую банку использовать. Различные версии будут иметь потенциально другое поведение.

Когда дело доходит до определения банки, содержащей данный class, я использую:

 for f in `find . -name '*.jar'`; do echo $f && jar tvf $f | grep -i $1; done 

Это выделит любую банку, содержащую имя classа, переданную как параметр в любой подпапке.

Еще один хороший способ найти class – использовать поиск репозитория maven .

Для меня это прекрасно работает:

 find * -type f -name '*.jar' -exec grep -l 'TestClass.class' '{}' \; 

С уважением

Используйте это: плагин netbeans

Или служба jarFinder

 **shell> find . -name "*.jar" | xargs -i -t \jar tvf {} | grep [TheClassNameYouAreLookingFor]** 

Например, если вы ищете class 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

Используйте локатор classа / JAR:

http://classlocator.sourceforge.net/

[EDIT] Это не очевидно даже из документов ClassLocator (!), Но, похоже, это плагин Eclipse.

Я использую FindJar.com . В нем перечислены все известные пакеты, содержащие любой class! Это невероятно полезно.

Обычно я делаю jar -vtf foo.jar чтобы получить список всех файлов classов.
Не самый практичный способ, но удобный. Конечно, вы можете комбинировать результат с grep.

В Intellij IDEA вы просто ctrl-click по имени classа, и вы будете перемещены в псевдо-исходный код этого classа, а заголовок windows будет выглядеть как c: \ path \ to \ lib.jar! \ Com \ something \ ClassName. class

Я не уверен, что я действительно понимаю вопрос, но если вы хотите проверить, что ваш class действительно в банке, вы всегда можете просмотреть банку, и для этого вам не нужны плагины Eclipse или специализированные внешнее приложение.

Файлы JAR (Java ARchive) – это не более чем ZIP- файлы. Все, что вам нужно сделать, это распаковать банку или даже просмотреть ее с помощью приложения для чтения в формате zip. Например, в Windows XP это встроено в операционную систему. Как удобно.

Надеюсь, это помогло …

Yuval = 😎

Также проверьте http://javacio.us/ .

Плагин IntelliJ IDEA (class Hunter)

Вы также можете попробовать Jarvana найти файлы jar для определенного classа.

Я голосую за CTRL-SHIFT-T, потому что он уже включен в Eclipse. Я фактически сбросил jarclassfinder.jar в директории плагинов внутри установки eclipse, но до сих пор не смог найти плагин в Eclipse GUI

если вы скажете eclipse открыть объявление (F3) или реализацию (Navigate-> Open Implementation), и вы попадете в редактируемое окно редактирования, вы увидите путь к файлу jar, щелкнув правой кнопкой мыши окно редактора и выбрав «показать в сухарях»

мой поиск на основе unix:

 find . -name "*.jar" -print -exec jar -tf {} \; >outputfile 

отредактируйте выходной файл, чтобы найти то, что вы хотите (вместо grep)

  • Что не так с этим простым «двойным» вычислением?
  • Как вручную принудительно совершить фиксацию в методе @Transactional?
  • как узнать версию операционной системы tomcat
  • Выберите опцию из меню правой кнопки мыши в Selenium Webdriver - Java
  • Фоновое изображение для jPanel не работает
  • java InetAddress.getLocalHost (); возвращает 127.0.0.1 ... как получить REAL IP?
  • Как преобразовать строку JSON в Map с помощью Jackson JSON
  • Как я могу запретить установку панели инструментов Ask.com каждый раз, когда обновляется Java?
  • Что случилось с переопределяемыми вызовами метода в конструкторах?
  • Структурировать объекты в Java
  • Как установить размер изображения с помощью RescaleOp
  • Давайте будем гением компьютера.