Просмотр содержимого файла .jar


226

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


12
Почему ты не принимаешь ответ?
Санхьюн Ли

4
@HughLee Парень, который спросил это, спросил 8 лет назад . Вот почему должно быть автоматическое принятие после того, как ответ достигнет 100 голосов IMO
Колоб Каньон

@KolobCanyon правда, но они с самым высоким рейтингом ответ был отправлен в тот же день, как этот был задан
Пранав А.

1
Ответ приходит от: https://superuser.com/a/808938/1045397 Вы можете сделать это с помощью vim vim file_name.jar
byte mamba

Ответы:


280

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


3
@salvob Вам не нужен дефис, так как он требуется после того, tarкак параметры являются обязательными.
Том Хотин - tackline

2
К вашему сведению, вам может потребоваться добавить C:\Program Files\Java\jdk<version>\binв вашу системную или пользовательскую переменную среды PATH, прежде чем вы сможете использовать jarв качестве системной команды. (Где <version> - ваш номер версии сборки jdk. Проверьте это C:\Program Files\Java)
Tezra

1
Пример javap: javap -classpath test.jar com.yourpackage.HelloWorld
mPrinC

чтобы увидеть содержимое не классовых файлов (например, манифеста), вы хотели бы сделать что-то вроде этого: tar -xOzf test.jarjar tf test.jar | grep MANIFEST
mPrinC

55

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

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

[РЕДАКТИРОВАТЬ] Ссылка на SO поток. Не то, что спрашивается, а как-то связано, поэтому полезно: Java: Как узнать, какой jar-файл использовать, учитывая имя класса?


Ссылка на сайт Jad была удалена, так как URL-адрес припаркован. Его по-прежнему можно найти на web.archive.org/web/20080106184313/http://www.kpdus.com/… но Jad сегодня все равно устарел.
PhiLho

35

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

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


Это работает кроссплатформенно, в то время как 7-Zip, упомянутый в другом ответе, специфичен для Windows.
Брэд Купит

Я использовал Archive Utility на OS X, работал нормально. Большинство (не) почтовые утилиты должны работать, независимо от платформы.
Greenonline

23

Если кто-то еще этого не знает, JAR-файл - это просто ZIP-файл, который содержит классы программы, ресурсы и т. Д., А также некоторые метаданные. Вы можете извлечь один, чтобы увидеть, как он сложен.

Поэтому я использую unzipкоманду, которую легко запомнить и использовать.

unzip -l <jar-file-name>.jar

Например, если у вас есть JAR-файл с именем, test.jarто unzip -l test.jarбудет перечислено все содержимое JAR-файла.

Хотя все остальные ответы хороши, но в большинстве из них вам придется использовать какое-то программное обеспечение, например, 7 zipили JDKкакой-либо другой инструмент Eclipse, в то время как для этого не нужно иметь какой-либо из этих больших программ, и он поставляется по умолчанию в Linux. и Mac, так что его очень легкий и удобный в использовании .

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


1
@Boop спасибо за предложение. добавит его в мой ответ
Opster Elasticsearch Ninja

1
Если проводник файлов поддерживает zip, переименование jar в .zip также работает (например, в windows)
Rhayene

16

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

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

Просто содержимое

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

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

Исходный код

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



7
jar -tvf file_name.jar

выше будет печатать только имена файлов .

Чтобы просмотреть содержимое файлов, вы можете извлечь файлы в папке :

jar -xvf file_name.jar

это разархивирует файл jar и поместит содержимое в тот же каталог, где вы его запускаете.

Или в Windows переименуйте файл .jar в .zip и затем вы можете разархивировать, чтобы извлечь и просмотреть содержимое файла jar. Поскольку jar является внутренним zip-файлом.


6

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

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


6

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

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

  2. jar tvf jarfile.jar

  3. jar tf jarfile.jar


5

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

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


Обратите внимание, что файл jar должен находиться в папке «Библиотеки со ссылками», а не только в «libs». А в случае библиотеки Apache Commons вы не просматриваете source.jar, вы просматриваете оригинал и затем присоединяете источник, когда Eclipse запрашивает.
Нумен

4

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

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


3

Ну, jar-файл - это просто zip-файл, поэтому, если вы разархивируете его (с помощью вашей любимой утилиты разархивирования), вы получите все файлы внутри.

Если вы хотите заглянуть в файлы классов, чтобы увидеть методы, вам понадобится инструмент для этого. Как упоминает PhiLho, Eclipse способен сделать это (по умолчанию), и я думаю, что большинство Java IDE способны на это.


3

В Eclipse 3.4 делаю

  1. Перетащите указанный файл jar в проект Java. Появляется копия файла JAR.
  2. Щелкните правой кнопкой мыши файл JAR и выберите «Build Path» -> «Add to Build Path».
  3. Файл JAR перемещается в узел «Библиотеки со ссылками», где он может быть открыт и перемещаться в панели Project Explorer.

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

Для навигации на уровне Jar-файла (в виде zip-файла) я использую 7zip, который работает очень хорошо, и позволяет просматривать и редактировать записи, что отлично подходит для устранения неполадок.


3

Один из способов сделать это - открыть перспективу в «Проводнике пакетов». Делая это, вы можете увидеть структуру вашей банки с деталями класса. Для этого проверьте папку библиотеки в вашем проекте с помощью проводника пакетов.

Окно >> Показать представление >> Другое >> Java >> Package Explorer

Другой способ, вы можете использовать JarPlug в качестве плагина Eclipse. Это работает в eclipse / springsource

http://jar-plug.sourceforge.net/


3

Если вы находитесь в Windows и используете powershell и ищете файл в банке, вы можете сделать:

jar -tf .\[JAR_NAME] | where {$_ -match "[FILENAME]"}

2

Вы можете открыть их с помощью большинства утилит декомпрессии в эти дни, а затем просто получить что-то вроде DJ Java Decompiler, если вы хотите просмотреть исходный код.



2

Мое требование состояло в том, чтобы просмотреть содержимое файла (например, файла свойств) внутри фляги, фактически не извлекая флягу. Если кто-то достиг этой темы, как я, попробуйте эту команду -

unzip -p myjar.jar myfile.txt

Это хорошо сработало для меня!



1

Я предпочитаю JAR Browser , он имеет простой интерфейс, где вы можете просматривать несколько JAR-файлов и искать определенный класс по нескольким JAR-файлам одновременно.


1

Eclipse 3.4 JDT

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


1

Я установил действие по умолчанию в Windows «Открыть с помощью WinZip». Это облегчает управление JAR-файлами как архивами. Вы даже можете добавлять / удалять файлы вручную.


1

Этот Jar Explorer достаточно хорош.
Поддерживает три типа декомпиляторов: JD, Procyon и Fernflower.
Позволяет искать файлы и дубликаты в любом архиве Java.
Также пользователь может изменять jar с помощью файлов D & D и редактировать некоторые файлы, не относящиеся к классу. введите описание изображения здесь введите описание изображения здесь


Пожалуйста, не размещайте какой-либо инструмент или библиотеку в качестве ответа. По крайней мере, продемонстрируйте, как это решает проблему в самом ответе.
Das_Geek


0

Ваша IDE также должна поддерживать это. Моя IDE (SlickeEdit) называет это «библиотекой тегов». Просто добавьте библиотеку тегов для файла JAR, и вы сможете просматривать классы и методы в иерархическом порядке.






Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.