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

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

Почему ты не принимаешь ответ?

Sanghyun Lee 11.05.2015 05:21

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

Kolob Canyon 02.11.2016 21:16

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

Pranav A. 27.09.2017 13:18

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

byte mamba 05.06.2019 04:43
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
247
4
381 684
32

Ответы 32

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

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

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

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

PhiLho 11.10.2018 12:08

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

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

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

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

Вы можете попробовать JarSpy. Есть версия плагина IDEA, которую я использую.

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

@salvob Вам не нужен дефис, так как он стоит после tar с обязательными параметрами.

Tom Hawtin - tackline 12.01.2017 19:51

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

Tezra 31.07.2017 17:09

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

mPrinC 22.09.2017 23:28

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

mPrinC 22.09.2017 23:28

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

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

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

Затмение 3.4 JDT

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

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

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

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

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

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

Noumenon 26.08.2013 05:07

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

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

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

Только содержание

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

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

Исходный код

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

В Eclipse 3.4 сделайте

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

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

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

На Mac есть Ярзилла

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

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

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

Brad Cupit 03.12.2015 00:09

Я использовал Утилита архивирования на OS X, работал нормально. Большинство утилит (un) zip должны работать независимо от платформы.

Greenonline 18.12.2015 13:58

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

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

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

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

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

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

Я использую JarExplorer или JarVisualizer.

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

Bndtools предоставляет бесплатный плагин просмотра JAR для Eclipse.

Добавьте Сайт обновлений Eclipse и установите только просмотрщик.

Расширяя ответ Тома Хотина, вы можете передать список, чтобы отфильтровать желаемый класс или файлы:

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

Это должно работать на bash / zsh и им подобных, или на eshell emacs.

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

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

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

  2. jar tvf jarfile.jar

  3. jar tf jarfile.jar

Я думаю, что Java Decomplier - ваш лучший вариант, который вы можете скачать здесь: http://jd.benow.ca/Preview

In case someone don't know this already, a JAR file is just a ZIP file that contains the program's classes, resources, etc., and some metadata. You can extract one to see how it's put together.

Поэтому я использую команду 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>. если ваша ОС это поддерживает.

@Boop спасибо за предложение. добавлю это к моему ответу

user156327 09.10.2018 14:41

Если проводник поддерживает zip, переименование jar в .zip тоже работает (например, в Windows)

Rhayene 05.12.2018 16:03

java -xf some-j.jar распакует файл JAR.

это jar -xf someJar.jar

Prajwal 13.01.2019 15:11
jar -tvf file_name.jar

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

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

jar -xvf file_name.jar

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

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

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

unzip -p myjar.jar myfile.txt

У меня это сработало!

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

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

Das_Geek 15.11.2019 19:09

я всегда использовал "jd-gui". я не знал об этом. благодаря. Спасибо за информацию

M9J_cfALt 27.08.2020 18:43

Вы можете просматривать файлы JAR, например файлы ZIP, из проводника Windows, выполнив следующие действия:

  • Запустите командную строку от имени администратора
  • В командной строке введите:

    ассоциированный .jar = CompressedFolder

  • Пока вы это делаете, вы можете сделать то же самое для файлов WAR и EAR:

    assoc .war = Сжатая папка

    assoc .ear = CompressedFolder

Самый простой способ просмотреть классы, методы, свойства и т. д. Внутри файла jar - это использовать такие программы, как «Winrar» и «7-молния».

  • Скачайте программу winrar или 7-zip, если она не установлена
  • Затем щелкните правой кнопкой мыши файл jar.
  • Нажмите, чтобы открыть с помощью WinRAR или 7-zip

Другие вопросы по теме