Просмотр содержимого файла .jar - PullRequest
181 голосов
/ 26 ноября 2008

Какой самый простой способ просмотра классов, методов, свойств и т. Д. Внутри файла JAR? Я ищу что-то эквивалентное очень полезному Lutz Roeder .NET Reflector - для Java

Ответы [ 29 ]

235 голосов
/ 26 ноября 2008

Используя JDK, jar -tf выведет список файлов в банке. javap даст вам больше деталей из определенного файла класса.

48 голосов
/ 26 ноября 2008

Я обычно открываю их с помощью 7-Zip ... Это позволяет хотя бы видеть пакеты, классы и ресурсы.
Если мне нужно увидеть методы или поля, я бы использовал Jad, но, конечно, лучше положиться на (хороший) JavaDoc ...

Теперь, где-то в SO были упомянуты некоторые плагины Eclipse, чтобы найти, в каком jar-файле находится класс, возможно, они могут сделать больше (т.е. то, что вы запросили).

[EDIT] Ссылка на SO поток. Не то, что спрашивается, а как-то связано, поэтому полезно: Java: Как узнать, какой файл jar использовать, учитывая имя класса?

32 голосов
/ 14 сентября 2012

Я лично использую JD-GUI. Это бесплатный «декомпилятор», поскольку он позволяет вам видеть исходный код, классы и объекты в классах, а также видеть структуру файла в древовидном меню слева. Однако это не позволяет вам изменять классы напрямую.

Сайт JD-GUI: http://jd.benow.ca/

16 голосов
/ 13 июня 2009

Имена методов, поля и т. Д.

Добавляя jar к проекту в IDE, вы обычно можете видеть методы и имена полей, но не детальную реализацию. NetBeans может это сделать, возможно, Eclipse, IntelliJ и т. Д. Вы можете просматривать структуру jar непосредственно в IDE.

Только содержимое

Для чего-либо, например, просмотра содержимого, вы можете использовать:

  • jar tvf jarfile.jar
  • winzip или любой zip-инструмент

Исходный код

Для доступа к исходному коду вы должны использовать декомпилятор, такой как JAD, один из его внешних интерфейсов или другой декомпилятор. Если код запутан, то ...

9 голосов
/ 29 июля 2015

Расширяя ответ Tom Hawtin, вы можете направить листинг, чтобы отфильтровать нужный класс или файлы:

jar tf my-fat-jar-file.jar | grep filename

Это должно работать на bash / zsh и аналогичных файлах, или на ehell ess.

Дополнительная информация: https://docs.oracle.com/javase/tutorial/deployment/jar/view.html

7 голосов
/ 26 ноября 2008

Использовать WinRar . Он откроет структуру папок для вас в целости и сохранности. Также позволяет редактировать в архиве, сохраняя пути.

В конце концов, файл JAR является только ZIP-архивом.

7 голосов
/ 21 февраля 2017

Используйте unzip -l <jar-file-name>.jar, например, если у вас есть файл jar с именем test.jar, тогда unzip -l test.jar отобразит содержимое файла jar.

Согласно инструкции команды unzip с опцией - l.

список архивных файлов (краткий формат). Имена, несжатый файл Размеры, даты и время изменения указанных файлов печатается вместе с итогами для всех указанных файлов. Если бы UnZip был скомпилировано с определенным OS2_EAS, опция -l также перечисляет столбцы для размеров хранимых расширенных атрибутов OS / 2 (EAs) и списков контроля доступа OS / 2 (ACL). Кроме того, комментарии к zipfile и отдельные комментарии к файлам (если есть) отображаются. Если файл был архивируется из файловой системы с одним регистром (например, старой файловой системы MS-DOS FAT), и была задана опция -L, имя файла преобразуется в нижний регистр и начинается с префикса (^)

Вы также можете использовать zipinfo <your jar file>. если ваша ОС поддерживает это.

6 голосов
/ 13 ноября 2015

Если вы хотите увидеть, что внутри, просто переименуйте в качестве первого варианта ниже ..

  1. F2 & Rename to jarfile.zip // Использовать любую расстегивающую молнию ...

  2. jar tvf jarfile.jar

  3. jar tf jarfile.jar

5 голосов
/ 21 декабря 2008

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

В любом случае, это хорошая идея для хорошего автономного инструмента Java

4 голосов
/ 26 ноября 2008

Джад клунки и больше не поддерживается. Я переключился на «Java Decompiler» , который имеет приятный пользовательский интерфейс и поддержку новых языковых функций.

Однако каждый используемый мной декомпилятор сталкивается с кодом, который он успешно не декомпилирует. Для них это помогает понять дизассемблированный байт-код Java, созданный стандартным инструментом JDK, javap .

...