Как посмотреть код jar файла
Используя JDK, jar -tf будет перечислять файлы в банке. javap предоставит вам более подробную информацию из определенного файла класса.
Ответ 2
Обычно я открываю их с помощью 7-Zip. Он позволяет, по крайней мере, видеть пакеты, классы и ресурсы.
Должен ли я видеть методы или поля, я бы использовал Jad, но, конечно, лучше полагаться на (хороший) JavaDoc.
Теперь, где-то на SO были упомянуты некоторые плагины Eclipse, чтобы найти в каком jar файле находится класс, возможно, они могут сделать больше (то есть, что вы запросили).
[EDIT] Ссылка на поток SO. Не то, что задано, но каким-то образом связано, таким образом, полезно: Java: Как узнать, какой файл jar использовать с именем класса?
Ответ 3
Я лично использую JD-GUI. Это бесплатный "декомпилятор", поскольку он позволяет вам видеть исходный код, классы и объекты в классах, а также видеть структуру файлов в древовидном меню слева. Однако это не позволяет вам напрямую изменять классы.
Ответ 4
Имена методов, поля и т.д.
Добавляя банку в проект в среде IDE, вы обычно можете видеть методы и имена полей, но не подробную реализацию. NetBeans может это сделать, возможно, Eclipse, вероятно, IntelliJ и т.д. Вы можете просматривать структуру jar непосредственно в среде IDE.
Просто содержимое
Для чего угодно, например просмотра содержимого, вы можете использовать:
- jar tvf jarfile.jar
- winzip или любой инструмент zip
Исходный код
Чтобы получить доступ к исходному коду, вы должны использовать декомпилятор, такой как JAD или один из его интерфейсов или другой декомпилятор. Если код запутан, тогда.
Ответ 5
Расширяя ответ Тома Хотина, вы можете передать список, чтобы отфильтровать требуемый класс или файлы:
jar tf my-fat-jar-file.jar | grep filename
Это должно работать на bash/zsh и similars, или emacs 'eshell.
Ответ 6
Если кто-то еще этого не знает, JAR файл - это просто ZIP файл. который содержит классы программы, ресурсы и т.д., а также некоторые метаданные. Вы можете извлечь один, чтобы увидеть, как он сложен.
Поэтому я использую команду unzip , которую легко запомнить и использовать.
unzip -l <jar-file-name>.jar
Например, если у вас есть файл JAR с именем test.jar , тогда unzip -l test.jar перечислит все содержимое файла JAR.
Хотя все остальные ответы хороши, но в большинстве из них вам придется использовать какое-то программное обеспечение, такое как 7 zip или JDK , или какой-либо другой инструмент для затмения, в то время как для этого не нужно иметь какое-либо из этих больших ПО и поставляется по умолчанию в Linux и Mac, поэтому он очень легкий и удобный в использовании.
Вы также можете использовать zipinfo <your jar file> . если ваша ОС поддерживает это.
Ответ 7
Использовать WinRar. Он откроет вам структуру папок неповрежденным способом. Также позволяет редактировать внутри архива, сохраняя пути.
Afterall, JAR файл является только ZIP-архивом.
Ответ 8
Если вам нравится видеть, что внутри, просто переименуйте как первый вариант ниже.
F2 & Rename to jarfile.zip //Используйте любую распаковку.
jar tvf jarfile.jar
jar tf jarfile.jar
Ответ 9
Если я правильно понимаю, вы хотите видеть не только классы, но также методы, свойства и т.д. Единственный инструмент, который я знаю, который может это сделать, - это Eclipse - если вы добавите jar в путь к классу проекта, вы сможете просматривать его классы с помощью методов и свойств с помощью обычного проводника пакетов.
В любом случае, это хорошая идея для хорошего автономного инструмента Java
Ответ 10
Jad является klunky и больше не поддерживается. Я переключился на "Java Decompiler" , в котором есть гладкий интерфейс и поддержка новых языковых функций.
Каждый декомпилятор, который я использовал, однако, запускается в код, который он не декомпилирует успешно. Для них это помогает понять дизассемблированный байт-код Java, созданный стандартным инструментом JDK, javap.
Ответ 11
выше будет печатать только имена файлов.
Чтобы просмотреть содержимое файлов, вы можете извлечь файлы в папке:
это разархивирует файл jar и поместит содержимое в тот же каталог, где вы его запускаете.
Или в Windows переименуйте файл .jar в .zip и затем вы можете разархивировать, чтобы извлечь и просмотреть содержимое файла jar. Поскольку jar является внутренним zip файлом.
Ответ 12
Ну, jar файл - это всего лишь zip файл, поэтому, если вы распакуете его (с помощью своей любимой утилиты для распаковки), вы получите все файлы внутри.
Если вы хотите просмотреть файлы классов, чтобы увидеть методы, вам понадобится инструмент для этого. Как упоминает PhiLho, Eclipse может это сделать (по умолчанию), и я думаю, что большинство Java IDE способны на это.
Ответ 13
В Eclipse 3.4 do
Если просмотр исходного кода тоже является проблемой, откройте новый вопрос.
Для навигации на уровне Jar файла (в виде zip файла) я использую 7zip, который работает очень хорошо, и позволяет просматривать и редактировать записи, которые отлично подходят для устранения проблем.
Ответ 14
Если вы находитесь в окнах и используете powershell, и ищете файл в банке, вы можете сделать:
Ответ 15
Один из способов сделать это - открыть перспективу в "Package explorer". Выполняя это, вы можете увидеть структуру вашей банки с деталями класса. Для этого проверьте папку библиотеки в вашем проекте с помощью проводника пакетов.
Другой способ: вы можете использовать JarPlug в качестве плагина eclipse. Это работает в eclipse/springsource
Ответ 16
В наши дни вы можете открыть их с помощью большинства утилит декомпрессии, а затем просто получить что-то вроде DJ Java Decompiler, если вы хотите просмотреть источник.
Ответ 17
Bndtools предоставляет бесплатный плагин просмотра JAR для Eclipse.
Добавьте сайт Eclipse update и установите только средство просмотра.
Ответ 18
Я предпочитаю JAR Browser, у него есть простой интерфейс, где вы можете просматривать несколько JAR и одновременно искать определенный класс в нескольких JAR.
Ответ 19
Это не самый быстрый способ, потому что сначала вы должны перенести его в свое затмение. Но у вас будет полный просмотр java-класса, даже с декомпиляцией.
Ответ 20
Я установил действие по умолчанию в Windows на "Открыть с помощью WinZip". Это упрощает управление JAR как архивами. Вы даже можете добавлять/удалять файлы вручную.
Ответ 21
Ответ 22
Мое требование состояло в том, чтобы просмотреть содержимое файла (например, файла свойств) внутри фляги, фактически не извлекая флягу. Если кто-то достиг этой темы, как я, попробуйте эту команду -
Это хорошо сработало для меня!
Ответ 23
Вы можете попробовать JarSpy. Существует версия плагина IDEA, которую я использую.
Ответ 24
Ваша IDE также должна поддерживать это. Моя среда IDE (SlickeEdit) называет ее "библиотекой тегов". Просто добавьте библиотеку тегов для файла jar, и вы должны иметь возможность просматривать классы и методы иерархически.
Ответ 25
Ответ 26
Я использую JarExplorer или JarVisualizer.
Ответ 27
Вы можете попробовать JarNavigator для просмотра и поиска содержимого файла jar.
Мы узнали о получении имен классов из файла JAR . Далее, в этом уроке мы обсудили, как получить имена классов в файле JAR в приложении Java.
В этом уроке мы узнаем еще один способ перечисления содержимого файла JAR из командной строки.
Мы также увидим несколько графических инструментов для просмотра более подробного содержимого файла JAR — например, исходный код Java.
2. Пример файла JAR
В этом уроке мы все равно возьмем stripe-0.0.1-SNAPSHOT.jar файл в качестве примера для решения вопроса о том, как просмотреть содержимое файла JAR:
3. Просмотр команды jar
Мы узнали, что можем использовать команду jar, поставляемую вместе с JDK, для проверки содержимого файла JAR:
Если мы хотим отфильтровать выходные данные, чтобы получить только нужную нам информацию, например, имена классов или файлы свойств, мы можем передать выходные данные в инструменты фильтрации, такие как grep .
Команда jar довольно удобна в использовании, если в нашей системе установлен JDK.
Однако иногда мы хотим изучить содержимое файла JAR в системе без установленного JDK. В этом случае команда jar недоступна.
Мы посмотрим на это в следующий раз.
4. С помощью команды распаковать
Файлы JAR упакованы в формате ZIP. Другими словами, если утилита может читать ZIP-файл, мы также можем использовать ее для просмотра файла JAR.
Команда unzip -это обычно используемая утилита для работы с ZIP-файлами из командной строки Linux.
Поэтому мы можем использовать опцию -l команды unzip для отображения содержимого файла JAR без его извлечения:
Благодаря команде unzip мы можем просматривать содержимое файла JAR без JDK.
Вывод выше довольно ясен. В нем перечислены файлы в файле JAR в табличном формате.
5. Изучение Файлов JAR С Помощью Утилит GUI
Команды jar и unzip удобны, но они перечисляют только имена файлов в файле JAR.
Иногда мы хотели бы узнать больше информации о файлах в файле JAR, например, изучив исходный код Java класса.
В этом разделе мы представим несколько независимых от платформы графических инструментов, которые помогут нам просматривать файлы внутри файла JAR.
5.1. Использование JD-GUI
Во-первых, давайте взглянем на JD-GUI .
JD-GUI-это хорошая утилита с открытым исходным кодом для изучения исходного кода Java, декомпилированного декомпилятором Java JD-Core .
JD-GUI отправляет файл JAR. Мы можем запустить утилиту с помощью команды java с параметром -jar , например:
Как только мы откроем файл JAR, все классы в файле JAR будут декомпилированы.
Затем мы можем выбрать файлы, которые нас интересуют, в левой части, чтобы изучить их исходный код:
Как мы можем видеть в приведенной выше демонстрации, в схеме слева перечислены классы и члены каждого класса, такие как методы и поля, так же, как мы обычно видим в IDE .
Это довольно удобно для поиска методов или полей, особенно когда нам нужно проверить некоторые классы со многими строками кода.
Когда мы щелкаем по различным классам с левой стороны, каждый класс будет открыт на вкладке с правой стороны.
Функция вкладки полезна, если нам нужно переключаться между несколькими классами.
5.2. Использование Jar Explorer
Еще одна приятная функция, предоставляемая Jar Explorer , заключается в том, что он поддерживает три различных декомпилятора Java: JD-Core, Procyon и Fernflower .
Мы можем переключаться между декомпиляторами при изучении исходного кода:
Jar Explorer довольно прост в использовании. Функция переключения декомпилятора тоже хороша. Однако контур с левой стороны останавливается на уровне класса.
Кроме того, поскольку Jar Explorer не предоставляет функцию вкладки, мы можем одновременно открывать только один файл.
Более того, каждый раз, когда мы выбираем класс с левой стороны, класс будет декомпилирован выбранным в данный момент декомпилятором.
5.3. Использование Luyten
Luyten -это хорошая графическая утилита с открытым исходным кодом для декомпилятора Java Procyon , которая предоставляет загрузки для различных платформ , например, формат .exe и формат JAR.
После загрузки файла JAR мы можем запустить Luyten с помощью команды java-jar :
Мы можем перетащить наш файл JAR в Luyten и изучить содержимое файла JAR:
Используя Luyten, мы не можем выбирать различные декомпиляторы Java. Но, как показано в приведенной выше демонстрации, Luyten предоставляет различные варианты декомпиляции. Кроме того, мы можем открывать несколько файлов во вкладках.
Кроме того, Luyten поддерживает хорошую систему тем, и мы можем выбрать удобную тему, изучая исходные коды.
Однако Luyten перечисляет структуру файла JAR только на уровне файла.
6. Заключение
В этой статье мы узнали, как перечислить файлы в файле JAR из командной строки. Позже мы увидели три утилиты GUI для просмотра более подробного содержимого файла JAR.
Если мы хотим декомпилировать классы и изучить исходный код файла JAR, выбор инструмента GUI может быть самым простым подходом.
Я получил исходный код для продукта Java для внесения дальнейших изменений. Архив содержит кучу файлов JAR.
достаточно ли для разработки приложения или только для распространения этих файлов?
Я получил исходный код для продукта Java .
Если вы действительно получили исходный код продукта, и все, что у вас есть, это файлы JAR, то файлы JAR (которые на самом деле являются ZIP-файлами с другим суффиксом файла и определенным видом "манифеста") должны содержат кучу файлов с расширением файла ".ява." Вы должны иметь возможность проверить это с помощью любого инструмента ZIP-архива.
если нет ".java " файлы в Банки (например, только много".класс " и другие файлы), у вас нет исходного кода для продукта. Внесение изменений будет на самом деле очень трудно, учитывая, что вы не являетесь разработчиком Java.
предполагая, что вы делаете это законно (т. е. с явным или неявным разрешением разработчика продукта), вы сэкономите себе много времени, если сможете и получить инструкции по сборке продукта. Например, если он построен с использованием Ant, вы хотите "построить".xml" файл(ы).
jar аналогичен zip-файлу, поэтому они могут содержать или не содержать исходный код, необходимый для разработки. Вы можете прочитать о jar files здесь.
обычно вы упаковываете .класса (составитель) файлы и распространять их .файлы jar, но можно поместить любой файл, который вы хотите (включая исходный код) в a .jar-архива. Если вам нужно изменить код в библиотеке,вам нужно будет увидеть источник.
также возможно, что.файлы jar в вашем проекте - это сторонние (или внутренние проприетарные) библиотеки, которые вам не нужно будет менять вообще. Довольно часто включают библиотеки, которые вы просто используете без изменение в вашей банке. Если остальная часть кода приложения доступна, вы можете просто изменить это без касания кода библиотеки.
любая современная Java IDE позволяет вам сбрасывать файлы jar и использовать их в качестве библиотечного кода. Это не требует источника etc. Затем вы можете развиваться new код, который включает в себя изменения.
Если вам нужно изменить код внутри банок, вам было бы намного лучше, имея исходный код для этой банки, которую вам нужно обновить, а затем работать с этим.
Если у вас нет исходного кода, и вы должны изменить класс, то вы можете декомпилировать класс использование, например, JAD в Java-файле (будьте осторожны, может содержать ошибки), а затем работать с этим. Вам просто нужно иметь этот класс перед jar в пути к классам (если только jar не запечатан, а затем у вас есть совершенно новый вопрос для stackoverflow).
У вас есть более опытные программисты Java в вашей команде, вы можете попросить о помощи?
вы можете попробовать декомпилировать файлы jar обратно в их источник, в противном случае файлы jar не очень помогут в разработке.
jar файлы могут, однако, помочь вам, когда они содержат некоторые библиотеки / пакеты / классы, которые вы считаете необходимыми для проект, над которым вы работаете. Таким образом, вы можете добавьте их в путь компиляции, если вы используете IDE Netbeans и использовать их, даже не заглядывая в источник. Однако это будет работать лучше всего, если вы делаете какой-то инкрементальный разработка вашего проекта. таким образом, это сильно зависит от того, как вы строите свой программное обеспечение, т. е. является ли оно инкрементным или вы хотите изменить то, что вы получили. для последнего вы, возможно, рассмотрим де-компиляцию или запрос исходного кода
Я предпочитаю JAR Browser, у него есть простой интерфейс, где вы можете просматривать несколько JAR и одновременно искать определенный класс в нескольких JAR.
Используя JDK, jar -tf будет перечислять файлы в банке. javap предоставит вам более подробную информацию из определенного файла класса.
Обычно я открываю их с помощью 7-Zip. Он позволяет, по крайней мере, видеть пакеты, классы и ресурсы.
Должен ли я видеть методы или поля, я бы использовал Jad, но, конечно, лучше полагаться на (хороший) JavaDoc.
Теперь, где-то на SO были упомянуты некоторые плагины Eclipse, чтобы найти в каком jar файле находится класс, возможно, они могут сделать больше (то есть, что вы запросили).
[EDIT] Ссылка на поток SO. Не то, что задано, но каким-то образом связано, таким образом, полезно: Java: Как узнать, какой файл jar использовать с именем класса?
Я лично использую JD-GUI. Это бесплатный "декомпилятор", поскольку он позволяет вам видеть исходный код, классы и объекты в классах, а также видеть структуру файлов в древовидном меню слева. Однако это не позволяет вам напрямую изменять классы.
Имена методов, поля и т.д.
Добавляя банку в проект в среде IDE, вы обычно можете видеть методы и имена полей, но не подробную реализацию. NetBeans может это сделать, возможно, Eclipse, вероятно, IntelliJ и т.д. Вы можете просматривать структуру jar непосредственно в среде IDE.
Просто содержимое
Для чего угодно, например просмотра содержимого, вы можете использовать:
-
jar tvf jarfile.jar
winzip или любой инструмент zip
Исходный код
Чтобы получить доступ к исходному коду, вы должны использовать декомпилятор, такой как JAD или один из его интерфейсов или другой декомпилятор. Если код запутан, тогда.
ответил(а) 2009-06-13T20:49:00+04:00 12 лет, 5 месяцев назадРасширяя ответ Тома Хотина, вы можете передать список, чтобы отфильтровать требуемый класс или файлы:
jar tf my-fat-jar-file.jar | grep filename
Это должно работать на bash/zsh и similars, или emacs 'eshell.
Использовать WinRar. Он откроет вам структуру папок неповрежденным способом. Также позволяет редактировать внутри архива, сохраняя пути.
Afterall, JAR файл является только ZIP-архивом.
Используйте 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> . если ваша ОС поддерживает это.
ответил(а) 2017-02-21T13:52:00+03:00 4 года, 9 месяцев назадЕсли вам нравится видеть, что внутри, просто переименуйте как первый вариант ниже.
F2 & Rename to jarfile.zip //Используйте любую распаковку.
jar tvf jarfile.jar
jar tf jarfile.jar
Если я правильно понимаю, вы хотите видеть не только классы, но также методы, свойства и т.д. Единственный инструмент, который я знаю, который может это сделать, - это Eclipse - если вы добавите jar в путь к классу проекта, вы сможете просматривать его классы с помощью методов и свойств с помощью обычного проводника пакетов.
В любом случае, это хорошая идея для хорошего автономного инструмента Java
Jad является klunky и больше не поддерживается. Я переключился на "Java Decompiler" , в котором есть гладкий интерфейс и поддержка новых языковых функций.
Каждый декомпилятор, который я использовал, однако, запускается в код, который он не декомпилирует успешно. Для них это помогает понять дизассемблированный байт-код Java, созданный стандартным инструментом JDK, javap.
Один из способов сделать это - открыть перспективу в "Package explorer". Выполняя это, вы можете увидеть структуру вашей банки с деталями класса. Для этого проверьте папку библиотеки в вашем проекте с помощью проводника пакетов.
Окно → Показать вид → Другое → Java → Пакет Explorer
Другой способ: вы можете использовать JarPlug в качестве плагина eclipse. Это работает в eclipse/springsource
Читайте также: