Каким будет самый простой способ просмотреть классы, методы, свойства и т. д. Внутри файла jar? Я ищу что-то эквивалентное очень полезному Рефлектор Lutz Roeder .NET - для Java
@HughLee Парень, который спросил об этом, спросил 8 лет назад. Вот почему должно быть автоматическое принятие после того, как ответ наберет 100 голосов. ИМО.
@KolobCanyon правда, но их самый популярный ответ был отправлен в тот же день, когда был задан этот
Ответ исходит от : https://superuser.com/a/808938/1045397 Вы можете сделать это с помощью vim vim file_name.jar




Я обычно открываю их с помощью 7-Zip ... Он позволяет, по крайней мере, видеть пакеты, классы и ресурсы. Если мне нужно увидеть методы или поля, я бы использовал Jad, но, конечно, лучше полагаться на (хороший) JavaDoc ...
Теперь, где-то на SO были упомянуты некоторые плагины Eclipse, чтобы узнать, в каком jar-файле находится класс, возможно, они могут сделать больше (то есть то, что вы просили).
[РЕДАКТИРОВАТЬ] Ссылка на тему SO. Не то, что просят, но как-то связано, поэтому полезно: Java: как узнать, какой файл jar использовать с учетом имени класса?
Ссылка на сайт Jad была удалена, поскольку URL-адрес припаркован. Его все еще можно найти на web.archive.org/web/20080106184313/http://www.kpdus.com/…, но Jad сегодня все равно устарел.
Используйте WinRar. Он откроет для вас структуру папок в неизменном виде. Также позволяет редактировать в архиве, сохраняя пути.
В конце концов, файл JAR - это только ZIP-архив.
Ну, jar-файл - это просто zip-файл, поэтому, если вы его разархивируете (с помощью вашей любимой утилиты для распаковки), вы получите все файлы внутри.
Если вы хотите заглянуть внутрь файлов классов, чтобы увидеть методы, вам понадобится инструмент для этого. Как упоминает PhiLho, Eclipse может это делать (по умолчанию), и я думаю, что большинство Java IDE способны на это.
Вы можете попробовать JarSpy. Есть версия плагина IDEA, которую я использую.
Используя JDK, jar -tf выведет список файлов в банке. javap предоставит вам более подробную информацию из конкретного файла класса.
@salvob Вам не нужен дефис, так как он стоит после tar с обязательными параметрами.
К вашему сведению, вам может потребоваться добавить C:\Program Files\Java\jdk<version>\bin в вашу системную или пользовательскую переменную среды PATH, прежде чем вы сможете использовать jar в качестве системной команды. (Где <version> - номер сборки вашей версии jdk. Проверьте его в C:\Program Files\Java)
Пример javap: javap -classpath test.jar com.yourpackage.HelloWorld
чтобы увидеть содержимое файлов, не относящихся к классам (например, манифеста), вы бы хотели сделать что-то вроде этого: tar -xOzf test.jar jar tf test.jar | grep MANIFEST
Я предпочитаю Браузер 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 запрашивает.
Я установил действие по умолчанию в окнах на «Открыть с помощью WinZip». Это упрощает управление JAR-файлами как архивами. Вы даже можете добавлять / удалять файлы вручную.
Добавляя банку к проекту в среде IDE, вы обычно можете видеть методы и имена полей, но не подробную реализацию. NetBeans может это сделать, возможно, Eclipse, возможно, IntelliJ и т. д. Вы можете просматривать структуру jar непосредственно в среде IDE.
Для чего угодно, например для просмотра содержимого, вы можете использовать:
jar tvf jarfile.jarЧтобы получить доступ к исходному коду, вы должны использовать декомпилятор, такой как JAD, или один из его интерфейсов, или другой декомпилятор. Если код запутан, то ...
В Eclipse 3.4 сделайте
Если просмотр исходного кода тоже является проблемой, задайте новый вопрос.
Для навигации на уровне Jar-файла (в виде zip-файла) я использую 7zip, который работает очень хорошо и позволяет просматривать и редактировать записи, что отлично подходит для устранения неполадок.
На Mac есть Ярзилла
Лично я использую JD-GUI. Это бесплатный «декомпилятор», поскольку он позволяет вам видеть исходный код, классы и объекты в классах, а также видеть структуру файлов в древовидном меню слева. Однако он не позволяет напрямую изменять классы.
Сайт JD-GUI: http://jd.benow.ca/
Это работает кросс-платформенно, в то время как 7-Zip, упомянутый в другом ответе, специфичен для Windows.
Я использовал Утилита архивирования на OS X, работал нормально. Большинство утилит (un) zip должны работать независимо от платформы.
Если вы находитесь в Windows и используете PowerShell и ищете файл в банке, вы можете сделать:
jar -tf .\[JAR_NAME] | where {$_ -match "[FILENAME]"}
Один из способов сделать это - открыть перспективу в «Проводнике пакетов». Сделав это, вы можете увидеть структуру вашего jar-файла с деталями класса. Для этого проверьте папку библиотеки в вашем проекте с помощью проводника пакетов.
Окно >> Показать вид >> Другое >> Java >> Проводник пакетов
Другой способ - вы можете использовать JarPlug как плагин eclipse. Это работает в eclipse / springsource
Я использую 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
Если вам нравится видеть, что внутри, просто переименуйте в первый вариант ниже ..
F2 & Rename to jarfile.zip // Используйте любую распаковщик ...
jar tvf jarfile.jar
jar tf jarfile.jar
Я думаю, что Java Decomplier - ваш лучший вариант, который вы можете скачать здесь: http://jd.benow.ca/
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 спасибо за предложение. добавлю это к моему ответу
Если проводник поддерживает zip, переименование jar в .zip тоже работает (например, в Windows)
java -xf some-j.jar распакует файл JAR.
это jar -xf someJar.jar
Также вы можете использовать Luyten - графический интерфейс для декомпилятора Java с открытым исходным кодом
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 и редактировать некоторые файлы, не относящиеся к классу.


Пожалуйста, не публикуйте просто какой-нибудь инструмент или библиотеку в качестве ответа. По крайней мере, продемонстрируйте как это решает проблему в самом ответе.
я всегда использовал "jd-gui". я не знал об этом. благодаря. Спасибо за информацию
Вы можете просматривать файлы JAR, например файлы ZIP, из проводника Windows, выполнив следующие действия:
В командной строке введите:
ассоциированный .jar = CompressedFolder
Пока вы это делаете, вы можете сделать то же самое для файлов WAR и EAR:
assoc .war = Сжатая папка
assoc .ear = CompressedFolder
Почему ты не принимаешь ответ?