Как просмотреть и извлечь содержимое JAR-файла

Зачем исследовать содержимое JAR-файла?
Иногда нужно убедиться, что в JAR находится именно то, что вы собираетесь отправить, обновить или развернуть. Просмотр содержимого помогает:
- проверить наличие нужных классов и ресурсов;
- убедиться в корректной структуре путей (пакетов);
- найти и изучить файл META-INF/MANIFEST.MF;
- быстро извлечь отдельные файлы без полного распаковывания.
Важно: не запускайте или не подключайте неизвестные JAR-файлы в рабочую среду до проверки.
Краткая терминология
- JAR: Java ARchive — файл-архив формата ZIP, обычно с расширением .jar.
- MANIFEST.MF: метаинформация пакета, находится в META-INF/MANIFEST.MF.
Просмотр содержимого JAR-файла (командная строка)
Самый прямой способ — воспользоваться утилитой jar, входящей в состав JDK. Примеры:
jar tf YourJarFile.jar- t — вывести «содержание» (table of contents);
- f — указать, что следующий аргумент — имя файла;
- опции можно указывать в любом порядке, но без пробелов между ними:
tf,tfvи т. п.
Для подробного (verbose) вывода, включающего дату и размер файлов, добавьте v:
jar tfv YourJarFile.jarЕсли JAR не в текущей директории, укажите путь:
jar tf /путь/к/YourJarFile.jarПримечание: jar читает JAR как ZIP-архив. В некоторых системах можно использовать команду unzip -l для просмотра списка:
unzip -l YourJarFile.jarИзвлечение содержимого JAR-файла
Чтобы распаковать весь JAR в текущую папку:
jar xf YourJarFile.jarОпция x указывает на извлечение. Команда создаст структуру директорий, соответствующую путям внутри архива.
Чтобы извлечь конкретные файлы, перечислите их после имени архива:
jar xf YourJarFile.jar login.html payment.htmlКоманда извлечёт только указанные файлы, если они есть в архиве.
Графические инструменты (GUI)
Если предпочитаете интерфейс, используйте архиваторы, которые поддерживают формат ZIP/JAR: 7-Zip, WinRAR, PeaZip на Windows; Keka или Archive Utility на macOS; File Roller или Ark на Linux. Откройте JAR как обычный архив, просмотрите и при необходимости извлеките нужные файлы.
Важно: GUI-инструменты полезны для разовой проверки и быстрого извлечения, но для скриптов и автоматизации предпочтительнее утилиты командной строки.
Что искать внутри JAR — чеклист
- META-INF/MANIFEST.MF — проверьте Main-Class и другие свойства;
- папки с пакетами классов (com/yourcompany/…);
- ресурсы: .properties, .xml, *.html, изображения;
- подписи в META-INF/.SF и META-INF/.RSA — если JAR подписан;
- наличие лишних исполняемых скриптов или бинарников.
Роль-based чеклист:
- Разработчик: убедиться, что собранные классы и ресурсы присутствуют.
- DevOps: проверить конфигурационные файлы и пути, подготовить для деплоя.
- Аудитор/безопасник: проверить подписи и отсутствие подозрительного исполняемого кода.
Когда просмотр или извлечение может не сработать
- архив повреждён — команды jar/unzip выдадут ошибку;
- файл зашифрован или содержит нестандартный контейнер — понадобится специальный инструмент;
- файлы внутри обфусцированы — просмотр структуры не даст семантики кода;
- отсутствие прав чтения на файл или на папку назначения при извлечении.
Альтернативные подходы
- unzip -l / unzip -p для просмотра/вывода отдельных файлов;
- jar tf в сочетании с grep для фильтрации по маске (Linux/macOS):
jar tf YourJarFile.jar | grep "META-INF"- Использовать Java-код для чтения архива (java.util.jar.JarFile) если нужно интегрировать проверку в приложение.
Безопасность и приватность
- Не выполняйте классы из неподтверждённых JAR.
- Проверяйте подписи и сертификаты в META-INF, если JAR должен быть подписан.
- При передаче по сети шифруйте канал (TLS) и проверяйте контрольные суммы.
Шпаргалка команд
# Просмотр списка
jar tf file.jar
jar tfv file.jar # подробный вывод
# Извлечение
jar xf file.jar
jar xf file.jar path/inside.jar/file.txt # извлечь конкретный файл
# Просмотр с помощью unzip
unzip -l file.jar
unzip -p file.jar META-INF/MANIFEST.MF # вывести содержимое MANIFEST.MF в stdoutМини-методика проверки перед отправкой JAR по сети
- Просмотрите список файлов:
jar tf. - Проверьте MANIFEST.MF:
unzip -p file.jar META-INF/MANIFEST.MF. - Убедитесь в отсутствии секретных данных (паролей, приватных ключей).
- Проверяйте подпись, если требуется.
- Сгенерируйте контрольную сумму (sha256) для передачи.
Критерии приёмки
- Все ожидаемые файлы присутствуют по путям, соответствующим исходной сборке.
- MANIFEST.MF содержит правильную Main-Class и версии, если это требуется.
- Распаковка без ошибок и с восстановлением структуры директорий.
Тестовые случаи
- Открыть корректный JAR и сравнить список с ожидаемым.
- Попытка извлечь несуществующий файл — утилита должна вернуть ненулевой код выхода или сообщение об ошибке.
- Проверка работы с подписанным JAR (наличие META-INF/*.RSA).
Совместимость и миграция
- JAR-файлы совместимы между платформами — это просто ZIP-архив с Java-спецификой.
- Для автоматизации используйте утилиты JDK в CI-пайплайнах.
Когда стоит использовать GUI, а когда CLI
- GUI удобно для быстрых ручных проверок и извлечения отдельных файлов.
- CLI лучше для автоматизации, скриптов и проверки большого числа артефактов.
Краткое резюме
Просмотр и извлечение JAR-файлов просты: используйте jar tf для списка и jar xf для извлечения. Если нужен подробный вывод — добавьте v. Для автоматизации применяйте CLI; для разовых ручных операций — GUI-архиваторы. Всегда проверяйте MANIFEST.MF и подписи перед распространением или развертыванием.
Важно: при работе с неизвестными JAR-файлами соблюдайте меры безопасности и не подключайте их без проверки.
Похожие материалы
Ссылки в macOS: алиасы, символьные и жесткие
Установить Windows 8 в VHD без переразметки
Dream Address в Animal Crossing: как пользоваться
Как продавать электронные книги — пошагово
Восстановить несохранённый документ Word