Рубрики
Без рубрики

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

Узнайте, как перечислить содержимое файла JAR из командной строки

Автор оригинала: Kai Yuan.

1. Обзор

Мы узнали о получении имен классов из файла JAR . Далее, в этом уроке мы обсудили, как получить имена классов в файле JAR в приложении Java.

В этом уроке мы узнаем еще один способ перечисления содержимого файла JAR из командной строки.

Мы также увидим несколько графических инструментов для просмотра более подробного содержимого файла JAR — например, исходный код Java.

2. Пример файла JAR

В этом уроке мы все равно возьмем stripe-0.0.1-SNAPSHOT.jar файл в качестве примера для решения вопроса о том, как просмотреть содержимое файла JAR:

3. Просмотр команды jar

Мы узнали, что можем использовать команду jar, поставляемую вместе с JDK, для проверки содержимого файла JAR:

$ jar tf stripe-0.0.1-SNAPSHOT.jar 
META-INF/
META-INF/MANIFEST.MF
...
templates/result.html
templates/checkout.html
application.properties
com/baeldung/stripe/StripeApplication.class
com/baeldung/stripe/ChargeRequest.class
com/baeldung/stripe/StripeService.class
com/baeldung/stripe/ChargeRequest$Currency.class

Если мы хотим отфильтровать выходные данные, чтобы получить только нужную нам информацию, например, имена классов или файлы свойств, мы можем передать выходные данные в инструменты фильтрации, такие как grep .

Команда jar довольно удобна в использовании, если в нашей системе установлен JDK.

Однако иногда мы хотим изучить содержимое файла JAR в системе без установленного JDK. В этом случае команда jar недоступна.

Мы посмотрим на это в следующий раз.

4. С помощью команды распаковать

Файлы JAR упакованы в формате ZIP. Другими словами, если утилита может читать ZIP-файл, мы также можем использовать ее для просмотра файла JAR.

Команда unzip -это обычно используемая утилита для работы с ZIP-файлами из командной строки Linux.

Поэтому мы можем использовать опцию -l команды unzip для отображения содержимого файла JAR без его извлечения:

$ unzip -l stripe-0.0.1-SNAPSHOT.jar
Archive:  stripe-0.0.1-SNAPSHOT.jar
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2020-10-16 20:53   META-INF/
...
      137  2020-10-16 20:53   static/index.html
      677  2020-10-16 20:53   templates/result.html
     1323  2020-10-16 20:53   templates/checkout.html
       37  2020-10-16 20:53   application.properties
      715  2020-10-16 20:53   com/baeldung/stripe/StripeApplication.class
     3375  2020-10-16 20:53   com/baeldung/stripe/ChargeRequest.class
     2033  2020-10-16 20:53   com/baeldung/stripe/StripeService.class
     1146  2020-10-16 20:53   com/baeldung/stripe/ChargeRequest$Currency.class
     2510  2020-10-16 20:53   com/baeldung/stripe/ChargeController.class
     1304  2020-10-16 20:53   com/baeldung/stripe/CheckoutController.class
...
---------                     -------
    15394                     23 files

Благодаря команде 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 , например:

$ java -jar jd-gui-1.6.6.jar

Когда мы видим главное окно JD-GUI, мы можем либо открыть наш файл JAR, перейдя в меню ” Файл -> Открыть файл… “, либо просто перетащить файл JAR в окно.

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

Затем мы можем выбрать файлы, которые нас интересуют, в левой части, чтобы изучить их исходный код:

Как мы можем видеть в приведенной выше демонстрации, в схеме слева перечислены классы и члены каждого класса, такие как методы и поля, так же, как мы обычно видим в IDE .

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

Когда мы щелкаем по различным классам с левой стороны, каждый класс будет открыт на вкладке с правой стороны.

Функция вкладки полезна, если нам нужно переключаться между несколькими классами.

5.2. Использование Jar Explorer

Jar Explorer -это еще один графический инструмент с открытым исходным кодом для просмотра содержимого файлов JAR. Он отправляет файл jar и сценарий запуска ” Jar Explorer.sh “. Он также поддерживает функцию перетаскивания, что делает открытие файла JAR довольно простым.

Еще одна приятная функция, предоставляемая Jar Explorer , заключается в том, что он поддерживает три различных декомпилятора Java: JD-Core, Procyon и Fernflower .

Мы можем переключаться между декомпиляторами при изучении исходного кода:

Jar Explorer довольно прост в использовании. Функция переключения декомпилятора тоже хороша. Однако контур с левой стороны останавливается на уровне класса.

Кроме того, поскольку Jar Explorer не предоставляет функцию вкладки, мы можем одновременно открывать только один файл.

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

5.3. Использование Luyten

Luyten -это хорошая графическая утилита с открытым исходным кодом для декомпилятора Java Procyon , которая предоставляет загрузки для различных платформ , например, формат .exe и формат JAR.

После загрузки файла JAR мы можем запустить Luyten с помощью команды java-jar :

$ java -jar luyten-0.5.4.jar 

Мы можем перетащить наш файл JAR в Luyten и изучить содержимое файла JAR:

Используя Luyten, мы не можем выбирать различные декомпиляторы Java. Но, как показано в приведенной выше демонстрации, Luyten предоставляет различные варианты декомпиляции. Кроме того, мы можем открывать несколько файлов во вкладках.

Кроме того, Luyten поддерживает хорошую систему тем, и мы можем выбрать удобную тему, изучая исходные коды.

Однако Luyten перечисляет структуру файла JAR только на уровне файла.

6. Заключение

В этой статье мы узнали, как перечислить файлы в файле JAR из командной строки. Позже мы увидели три утилиты GUI для просмотра более подробного содержимого файла JAR.

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