Какой самый простой способ просмотреть классы, методы, свойства и т. Д. Внутри файла JAR? Я ищу что-то эквивалентное очень полезному Lutz Roeder .NET Reflector - для Java
@HughLee Парень, который спросил это, спросил 8 лет назад . Вот почему должно быть автоматическое принятие после того, как ответ достигнет 100 голосов IMO
Колоб Каньон
@KolobCanyon правда, но они с самым высоким рейтингом ответ был отправлен в тот же день, как этот был задан
@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-файле находится класс, возможно, они могут сделать больше (т.е. то, что вы запросили).
Я лично использую JD-GUI. Это бесплатный «декомпилятор», так как он позволяет вам видеть исходный код, классы и объекты в классах, а также видеть структуру файла в древовидном меню слева. Однако это не позволяет вам изменять классы напрямую.
Это работает кроссплатформенно, в то время как 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>. если ваша ОС поддерживает это.
@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 или один из его внешних интерфейсов или другой декомпилятор. Если код запутан, то ...
Чтобы просмотреть содержимое файлов, вы можете извлечь файлы в папке :
jar -xvf file_name.jar
это разархивирует файл jar и поместит содержимое в тот же каталог, где вы его запускаете.
Или в Windows переименуйте файл .jar в .zip и затем вы можете разархивировать, чтобы извлечь и просмотреть содержимое файла jar. Поскольку jar является внутренним zip-файлом.
Если я правильно понимаю, вы хотите видеть не только классы, но и методы, свойства и так далее. Единственный известный мне инструмент, который может это сделать, - это Eclipse - если вы добавите jar в проект classpath, вы сможете просматривать его классы с помощью методов и свойств, используя обычный проводник пакетов.
Во всяком случае, это хорошая идея для хорошего автономного инструмента Java
Обратите внимание, что файл jar должен находиться в папке «Библиотеки со ссылками», а не только в «libs». А в случае библиотеки Apache Commons вы не просматриваете source.jar, вы просматриваете оригинал и затем присоединяете источник, когда Eclipse запрашивает.
Нумен
4
Джад клунки и больше не поддерживается. Я переключился на «Java Decompiler» , который имеет приятный пользовательский интерфейс и поддержку новых языковых функций.
Каждый используемый мной декомпилятор работает с кодом, который он не может успешно декомпилировать. Для них это помогает понять дизассемблированный байт-код Java, созданный стандартным инструментом JDK, javap .
Ну, jar-файл - это просто zip-файл, поэтому, если вы разархивируете его (с помощью вашей любимой утилиты разархивирования), вы получите все файлы внутри.
Если вы хотите заглянуть в файлы классов, чтобы увидеть методы, вам понадобится инструмент для этого. Как упоминает PhiLho, Eclipse способен сделать это (по умолчанию), и я думаю, что большинство Java IDE способны на это.
Перетащите указанный файл jar в проект Java. Появляется копия файла JAR.
Щелкните правой кнопкой мыши файл JAR и выберите «Build Path» -> «Add to Build Path».
Файл JAR перемещается в узел «Библиотеки со ссылками», где он может быть открыт и перемещаться в панели Project Explorer.
Если просмотр исходного кода тоже является проблемой, откройте новый вопрос.
Для навигации на уровне Jar-файла (в виде zip-файла) я использую 7zip, который работает очень хорошо, и позволяет просматривать и редактировать записи, что отлично подходит для устранения неполадок.
Один из способов сделать это - открыть перспективу в «Проводнике пакетов». Делая это, вы можете увидеть структуру вашей банки с деталями класса. Для этого проверьте папку библиотеки в вашем проекте с помощью проводника пакетов.
Окно >> Показать представление >> Другое >> Java >> Package Explorer
Другой способ, вы можете использовать JarPlug в качестве плагина Eclipse. Это работает в eclipse / springsource
Вы можете открыть их с помощью большинства утилит декомпрессии в эти дни, а затем просто получить что-то вроде DJ Java Decompiler, если вы хотите просмотреть исходный код.
Мое требование состояло в том, чтобы просмотреть содержимое файла (например, файла свойств) внутри фляги, фактически не извлекая флягу. Если кто-то достиг этой темы, как я, попробуйте эту команду -
Я предпочитаю JAR Browser , он имеет простой интерфейс, где вы можете просматривать несколько JAR-файлов и искать определенный класс по нескольким JAR-файлам одновременно.
Это не самый быстрый способ, потому что вы должны сначала перетащить его в свое затмение. Но у вас будет полный просмотр классов Java, даже если включена декомпиляция.
Я установил действие по умолчанию в Windows «Открыть с помощью WinZip». Это облегчает управление JAR-файлами как архивами. Вы даже можете добавлять / удалять файлы вручную.
Этот Jar Explorer достаточно хорош.
Поддерживает три типа декомпиляторов: JD, Procyon и Fernflower.
Позволяет искать файлы и дубликаты в любом архиве Java.
Также пользователь может изменять jar с помощью файлов D & D и редактировать некоторые файлы, не относящиеся к классу.
Пожалуйста, не размещайте какой-либо инструмент или библиотеку в качестве ответа. По крайней мере, продемонстрируйте, как это решает проблему в самом ответе.
Das_Geek
0
Вы можете попробовать JarSpy . Есть версия плагина IDEA, которую я использую.
Ваша IDE также должна поддерживать это. Моя IDE (SlickeEdit) называет это «библиотекой тегов». Просто добавьте библиотеку тегов для файла JAR, и вы сможете просматривать классы и методы в иерархическом порядке.
Ответы:
Используя JDK, приведу
jar -tf
список файлов в банке.javap
даст вам больше деталей из конкретного файла класса.источник
tar
как параметры являются обязательными.C:\Program Files\Java\jdk<version>\bin
в вашу системную или пользовательскую переменную среды PATH, прежде чем вы сможете использоватьjar
в качестве системной команды. (Где <version> - ваш номер версии сборки jdk. Проверьте этоC:\Program Files\Java
)jar tf test.jar | grep MANIFEST
Я обычно открываю их с помощью 7-Zip ... Это позволяет хотя бы видеть пакеты, классы и ресурсы.
Если мне нужно увидеть методы или поля, я бы использовал Jad, но, конечно, лучше положиться на (хороший) JavaDoc ...
Теперь, где-то в SO было упомянуто несколько плагинов Eclipse, чтобы найти, в каком jar-файле находится класс, возможно, они могут сделать больше (т.е. то, что вы запросили).
[РЕДАКТИРОВАТЬ] Ссылка на SO поток. Не то, что спрашивается, а как-то связано, поэтому полезно: Java: Как узнать, какой jar-файл использовать, учитывая имя класса?
источник
Я лично использую JD-GUI. Это бесплатный «декомпилятор», так как он позволяет вам видеть исходный код, классы и объекты в классах, а также видеть структуру файла в древовидном меню слева. Однако это не позволяет вам изменять классы напрямую.
Сайт JD-GUI: http://jd.benow.ca/
источник
Поэтому я использую
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>
. если ваша ОС поддерживает это.источник
Имена методов, поля и т. Д.
Добавляя jar-файл к проекту в IDE, вы обычно можете видеть методы и имена полей, но не детальную реализацию. NetBeans может сделать это, возможно, Eclipse, IntelliJ и т. Д. Вы можете просматривать структуру jar непосредственно в IDE.
Просто содержимое
Для чего-либо, например, просмотра содержимого, вы можете использовать:
jar tvf jarfile.jar
Исходный код
Для доступа к исходному коду вы должны использовать декомпилятор, такой как JAD или один из его внешних интерфейсов или другой декомпилятор. Если код запутан, то ...
источник
Расширяя ответ Tom Hawtin, вы можете направить список, чтобы отфильтровать нужный класс или файлы:
jar tf my-fat-jar-file.jar | grep filename
Это должно работать на bash / zsh и аналогичных файлах, или на eshell emacs.
Дополнительная информация: https://docs.oracle.com/javase/tutorial/deployment/jar/view.html.
источник
выше будет печатать только имена файлов .
Чтобы просмотреть содержимое файлов, вы можете извлечь файлы в папке :
это разархивирует файл jar и поместит содержимое в тот же каталог, где вы его запускаете.
Или в Windows переименуйте файл .jar в .zip и затем вы можете разархивировать, чтобы извлечь и просмотреть содержимое файла jar. Поскольку jar является внутренним zip-файлом.
источник
Используйте WinRar . Это откроет структуру папок для вас в целости и сохранности. Также позволяет редактировать в архиве, сохраняя пути.
В конце концов, JAR-файл - это только ZIP-архив.
источник
Если вам нравится видеть, что внутри, просто переименуйте в качестве первого варианта ниже ..
F2 & Rename to jarfile.zip
// Используем любую расстегивающую молнию ...jar tvf jarfile.jar
jar tf jarfile.jar
источник
Если я правильно понимаю, вы хотите видеть не только классы, но и методы, свойства и так далее. Единственный известный мне инструмент, который может это сделать, - это Eclipse - если вы добавите jar в проект classpath, вы сможете просматривать его классы с помощью методов и свойств, используя обычный проводник пакетов.
Во всяком случае, это хорошая идея для хорошего автономного инструмента Java
источник
Джад клунки и больше не поддерживается. Я переключился на «Java Decompiler» , который имеет приятный пользовательский интерфейс и поддержку новых языковых функций.
Каждый используемый мной декомпилятор работает с кодом, который он не может успешно декомпилировать. Для них это помогает понять дизассемблированный байт-код Java, созданный стандартным инструментом JDK, javap .
источник
Ну, jar-файл - это просто zip-файл, поэтому, если вы разархивируете его (с помощью вашей любимой утилиты разархивирования), вы получите все файлы внутри.
Если вы хотите заглянуть в файлы классов, чтобы увидеть методы, вам понадобится инструмент для этого. Как упоминает PhiLho, Eclipse способен сделать это (по умолчанию), и я думаю, что большинство Java IDE способны на это.
источник
В Eclipse 3.4 делаю
Если просмотр исходного кода тоже является проблемой, откройте новый вопрос.
Для навигации на уровне Jar-файла (в виде zip-файла) я использую 7zip, который работает очень хорошо, и позволяет просматривать и редактировать записи, что отлично подходит для устранения неполадок.
источник
Один из способов сделать это - открыть перспективу в «Проводнике пакетов». Делая это, вы можете увидеть структуру вашей банки с деталями класса. Для этого проверьте папку библиотеки в вашем проекте с помощью проводника пакетов.
Окно >> Показать представление >> Другое >> Java >> Package Explorer
Другой способ, вы можете использовать JarPlug в качестве плагина Eclipse. Это работает в eclipse / springsource
http://jar-plug.sourceforge.net/
источник
Если вы находитесь в Windows и используете powershell и ищете файл в банке, вы можете сделать:
источник
Вы можете открыть их с помощью большинства утилит декомпрессии в эти дни, а затем просто получить что-то вроде DJ Java Decompiler, если вы хотите просмотреть исходный код.
источник
Bndtools предоставляет бесплатный плагин для просмотра JAR для Eclipse.
Добавьте сайт обновлений Eclipse и установите только средство просмотра.
источник
Мое требование состояло в том, чтобы просмотреть содержимое файла (например, файла свойств) внутри фляги, фактически не извлекая флягу. Если кто-то достиг этой темы, как я, попробуйте эту команду -
Это хорошо сработало для меня!
источник
Я думаю, что Java Decomplier - ваш лучший вариант, который вы можете скачать здесь: http://jd.benow.ca/
источник
Я предпочитаю JAR Browser , он имеет простой интерфейс, где вы можете просматривать несколько JAR-файлов и искать определенный класс по нескольким JAR-файлам одновременно.
источник
Eclipse 3.4 JDT
Это не самый быстрый способ, потому что вы должны сначала перетащить его в свое затмение. Но у вас будет полный просмотр классов Java, даже если включена декомпиляция.
источник
Я установил действие по умолчанию в Windows «Открыть с помощью WinZip». Это облегчает управление JAR-файлами как архивами. Вы даже можете добавлять / удалять файлы вручную.
источник
Этот Jar Explorer достаточно хорош.
Поддерживает три типа декомпиляторов: JD, Procyon и Fernflower.
Позволяет искать файлы и дубликаты в любом архиве Java.
Также пользователь может изменять jar с помощью файлов D & D и редактировать некоторые файлы, не относящиеся к классу.
источник
Вы можете попробовать JarSpy . Есть версия плагина IDEA, которую я использую.
источник
Ваша IDE также должна поддерживать это. Моя IDE (SlickeEdit) называет это «библиотекой тегов». Просто добавьте библиотеку тегов для файла JAR, и вы сможете просматривать классы и методы в иерархическом порядке.
источник
На Mac есть Jarzilla
источник
Я использую JarExplorer или JarVisualizer .
источник
Вы можете попробовать JarNavigator для просмотра и поиска содержимого файла JAR .
источник
java -xf some-j.jar
разархивирует файл JAR.источник
Также вы можете использовать Luyten - GUI декомпилятора с открытым исходным кодом.
источник