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

Для данного класса 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:

  3. Если вы хотите узнать из Интернета или у вас еще нет баночки:


person Eugene Yokota    schedule 08.11.2008    source источник
comment
фу! Такой уродливый способ найти. Я предпочитаю: для f в $ (find. -Name * .jar); сделать эхо $ f && jar tvf $ f | grep -i $ 1; Выполнено   -  person Eldelshell    schedule 05.01.2009
comment
Приятно, что вы составили резюме ответов. @ Уберсолдат, почему это так уродливо?   -  person luiscolorado    schedule 17.08.2010
comment
Я ненавижу эти мерзкие обратные кавычки. Я испанец, и мы не используем их ни для чего, кроме случаев, когда мы делаем что-то не так. Кроме того, их очень трудно читать. Вот почему я предпочитаю $ (что-то)   -  person Eldelshell    schedule 17.08.2010


Ответы (17)


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

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

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


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

В комментариях sunleo ниже:

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


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

Для Mac это cmd + shift + T в Eclipse, чтобы найти класс и связанный jar.

person VonC    schedule 08.11.2008
comment
@Kevin: правда, похоже, я больше не могу его найти. - person VonC; 09.02.2012
comment
лучше проверьте ответ, указанный ниже, чтобы найти Ctrl + Shift + T в Eclipse. - person sunleo; 19.05.2014
comment
@sunleo Верно. Я включил его в ответ для большей наглядности. - person VonC; 19.05.2014
comment
Для Mac это cmd + shift + T в Eclipse, чтобы найти класс и связанный jar. - person user862268; 09.04.2016
comment
@ user862268 Спасибо. Я включил ваш комментарий для большей наглядности. - person VonC; 09.04.2016

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

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

person pkliem    schedule 08.11.2008
comment
Ctrl + Shift + T? В какой программе? Какая система? - person PhiLho; 09.11.2008
comment
@PhiLho в затмении. Это то, чем был отмечен исходный вопрос. - person Konstantin Tarashchanskiy; 20.04.2012
comment
@KonstantinNaryshkin Doh! за его отсутствие, -1 в исходном сообщении, поскольку он полагается только на теги, отсутствует, чтобы указать это в заголовке или в самом сообщении. Учитывая, что большинство ответов здесь находится за пределами Eclipse, я не единственный, кто это пропустил. (Или мы думали, что это нужно только для того, чтобы найти классы Eclipse?) Общие ответы в любом случае полезны. Примечания: спасибо за ответ на мой вопрос (лучше поздно, чем никогда); и дать ответ с помощью сочетания клавиш немного хрупко, так как их можно изменить (я делаю, но не этот). Здесь это ярлык для функции Open Type. - person PhiLho; 25.04.2012

перейти к Ctrl + Shift + T в Eclipse IDE

Появится диалоговое окно Open Type, в котором вы вводите имя класса. после этого отобразятся идентификатор пакета и место назначения jar.

person arvindwill    schedule 20.12.2011

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

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

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

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

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

person user28791    schedule 08.11.2008

Для меня это отлично работает:

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

С Уважением

person user2039378    schedule 04.02.2013

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

Или сервис jarFinder

person iberck    schedule 08.11.2008

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

Например, если вы ищете класс LogFactory.class в списке общих jar-файлов apache, команда ниже будет работать

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.

person user1039322    schedule 10.11.2011

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

http://classlocator.sourceforge.net/

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

person Yuval Adam    schedule 08.11.2008

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

person Kieveli    schedule 08.11.2008
comment
Не удалось найти org.eclipse.ui.views.navigator.ResourceNavigator. jarfinder.com работал. - person Eugene Yokota; 09.11.2008
comment
oracle.jdbc.driver.OracleDriver jarfinder не нашел его, а findjar нашел. - person Kieveli; 03.12.2008

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

person PhiLho    schedule 08.11.2008
comment
Это поможет вам выйти из класса JAR - ›, но не наоборот, как он и просил ... - person Yuval Adam; 08.11.2008
comment
Прости? Мой метод показывает, находится ли класс в банке, что в значительной степени является тем, о чем спрашивают, если вы потратите время на изучение всех банок вашего проекта. Использование for, как показывает k3andme, конечно же, помогает. - person PhiLho; 09.11.2008
comment
Если у вас есть 1 файл класса, который нужно найти в 1000 JAR, у вас проблема ... (И это не редкость, на моем рабочем месте я работаю с тысячами JAR) - person Yuval Adam; 09.11.2008

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

person Pavel Feldman    schedule 09.11.2008

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

моя находка на основе unix:

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

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

person Geoffrey Ritchey    schedule 24.10.2017

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

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

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

Юваль = 8-)

person Yuval    schedule 08.11.2008
comment
Иногда не очевидно, какой файл jar содержит интересующий вас класс. - person Eugene Yokota; 09.11.2008

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

person Adisesha    schedule 10.11.2008
comment
Я не вижу jar-файла в результатах поиска. - person Eugene Yokota; 10.11.2008


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

person Community    schedule 07.09.2009

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

person amphibient    schedule 23.09.2012