Как мне найти пакеты, определенные в банке? - PullRequest
9 голосов
/ 20 января 2011

У меня есть куча JAR-файлов (из проекта maven2), и maven сообщает, что не удалось найти какой-либо пакет (точнее, org.openanzo.client.jena). Я хочу изучить файлы JAR, загруженные в результате разрешения зависимостей maven, и выяснить, какие пакеты доступны из этих файлов JAR. Insights?

ОБНОВЛЕНИЕ: По-видимому, единственным хорошим решением для проверки внутренних частей файла jar является утилита "jar", или для этого можно использовать возможности их IDE.

Ответы [ 5 ]

14 голосов
/ 20 января 2011

jar tvf filename.jar покажет вам содержимое файла JAR без необходимости извлекать его.

Но я думаю, что, возможно, вы действительно пытаетесь найти правильные координаты для отсутствующей зависимости, поскольку, очевидно, ни одна из тех, что у вас есть сейчас, не предоставляет пакет, который вы ищете (другими словами проверка их содержимого вряд ли вам поможет).

Признаюсь, первое место, которое я бы предложил проверить, - это общедоступный экземпляр Nexus Sonatype . Однако поиск вашего примера ничего не дает. Обычно это означает, что проект не пытается поместить свои материалы в Maven Central или другие крупные репозитории (что нормально), поэтому вам приходится прибегать к поиску в Интернете. Обычно первые два раздела пакета говорят вам, где искать (openanzo.org в вашем случае).

10 голосов
/ 20 января 2011

Если вы используете Linux или Mac, вы можете перейти к терминалу в корне папки, содержащей ваши JAR-файлы, и набрать:

   # grep -ri "org.openanzo.client.jena" *

Он вернет рекурсивный список всех файлов JAR, которые содержат это имя пакета. Если он возвращает 0 результатов, то ни один из этих JARS не содержит этот пакет.

Если вы хотите выполнить более тщательный поиск, вы можете разархивировать файлы JAR. Структура каталогов и файлы .class будут организованы по пакетам в папках.

  # jar xvf filename.jar

Если вы работаете в Windows, вы можете разархивировать JAR-файл с помощью такого инструмента, как 7Zip .

2 голосов
/ 20 января 2011

@ Карстен Вам не нужно переименовывать файл .jar в .zip. Вы можете напрямую открыть файл jar в winzip / или другой zip-утилите (при условии Windows OS)

@ ashy_32bit попробуйте использовать плагин Eclipse "JAR Class Finder" от IBM. Простой плагин для поиска классов (если вы знаете имя класса)

OR

как предложил Карстен ... установите файлы jar в виде файлов lib и посмотрите вручную

OR

создайте пакетный файл с именем a.bat (где у вас есть все ваши файлы JAR непосредственно в одной папке) и вставьте следующие 4 строки

@ECHO OFF
dir /b *.jar > allJarFilesList.txt
FOR /F %%A IN (allJarFilesList.txt) DO jar -tf %%A > list_of_packages.txt
FOR %%B IN (list_of_packages.txt) DO FIND /I "com/sun" %%B

Обратите внимание на "com / sun" в последней строке ... он жестко запрограммирован, вы также можете передать его в качестве аргумента ...

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

надеюсь, это поможет: -)

1 голос
/ 20 января 2011

.jar файлы - это просто ZIP-сжатые архивы, переименуйте его в zip, откройте его с помощью вашей любимой программы распаковки и пройдите по каталогу.

Если вы добавите jar-файл в проект eclipse, вы сможете пройти через lib в проводнике проекта.

НТН

0 голосов
/ 20 января 2011

Если maven загрузил файлы jar, они будут загружены в локальный репозиторий.Вы можете использовать браузер maven, который поставляется в комплекте с Eclipse, для просмотра и поиска артефактов в вашем хранилище. (Обычно в userdir / .m2 / repository)

Примечание: вы можете исследовать свой хранилище напрямую, если хотите.Вы поймете пакеты, которые были загружены.Но я предлагаю использовать плагин.

Если вы используете Intellij IDEA, каждый проект содержит дерево под названием External Library, которое позволяет вам искать и исследовать ваши библиотеки.

...