Запуск Java · Урок 7/13
54%
⏱ 5 минут чтения Обновлено: 2026-06-28

Как создать JAR файл

Для удобства распространения приложения, в Java существует такой механизм как JAR (Java Archive) файлы. JAR-файлы используются для архивации и сжатия данных.

Базовый формат команды для создания JAR-файла такой:

jar -cf jar-файл входной-файл(ы)

Сгенерированный JAR-файл будет помещен в текущий каталог.

Рассмотрим ключи и аргументы, использованные в этой команде:

  • Ключ c показывает, что необходимо создать (create) JAR-файл.
  • Ключ f показывает, что необходимо направить вывод в файл, а не в стандартный поток вывода.
  • jar-файл - это имя, которое необходимо дать результирующему JAR-файлу. Вы можете использовать любое имя для JAR-файл. По соглашению, имени JAR-файла дается расширение .jar, хотя это и необязательно.
  • Аргумент входной-файл(ы) - список, разделенный пробелами из одного или более файлов, которые вы хотите поместить в ваш JAR-файл. Аргумент входной-файл(ы) может содержать также символ-джокер (wildcard) *. Если любые из входных файлов являются каталогами, содержимое этих каталогов рекурсивно добавляется в архив JAR.

Правила относительно структуры JAR-файла.

  • Команда jar автоматически создаст META-INF каталог.
  • Команда jar автоматически создаст MANIFEST.MF и поместит его в META-INF каталог.
  • Сохраняется точная структура каталогов.
  • Команды java и javac могут использовать JAR-файл как нормальное дерево каталогов.
  • Поиск JAR-файлов с помощью ключа -cp аналогичен поиску пакетных файлов. Единственная разница - путь к JAR-файлу должен содержать имя JAR-файла (например classes/project1.jar).

Рассмотрим на примере как создаются и используются JAR файлы.

Допустим, что наше приложение имеет следующую структуру каталогов:

Структура каталогов фото

Создадим JAR-файл project1.jar, который будет содержать пакеты first и second:

cd project1/classes
jar –cf project1.jar first second

Можем просмотреть содержимое project1.jar файла с помощью следующей команды:

jar -tf project1.jar

Результат выполнения будет приблизительно такой:

META-INF/
META-INF/MANIFEST.MF
first/
first/Example1.class
second/
second/Example2.class

 Перенесем созданный project1.jar файл в каталог lib и запустим на выполнение программу first.Example:

cd lib
java -cp project1.jar first.Example1

Запуск JAR одной командой: java -jar

Если в манифесте указать главный класс, JAR можно запускать без -cp и без имени класса — командой java -jar project1.jar. Для этого при создании архива добавляют ключ e (entry point): jar -cfe project1.jar first.Example1 first second. Команда jar запишет строку Main-Class: first.Example1 в META-INF/MANIFEST.MF, и JVM будет знать, какой класс запускать.

Часто задаваемые вопросы

Что такое JAR-файл в Java?

JAR (Java Archive) — это архив на основе формата ZIP, в который упаковывают скомпилированные классы (.class), ресурсы и манифест. Он нужен для удобного распространения и запуска Java-приложения как единого файла.

Как создать JAR-файл из командной строки?

Базовая команда — jar -cf имя.jar входные-файлы. Ключ c означает create (создать), ключ f — направить вывод в файл. Например: jar -cf project1.jar first second упакует пакеты first и second.

Что такое MANIFEST.MF и кто его создаёт?

Это служебный файл с метаданными архива, который лежит в каталоге META-INF. При создании JAR команда jar формирует каталог META-INF и файл MANIFEST.MF автоматически — вручную их создавать не нужно.

Как посмотреть содержимое JAR без распаковки?

Используйте команду jar -tf имя.jar. Ключ t выводит оглавление (table of contents) архива — список всех файлов и каталогов внутри JAR, не распаковывая его.

Как запустить класс из JAR-файла?

Можно добавить JAR в classpath и указать класс: java -cp project1.jar first.Example1. Если в манифесте задан Main-Class, достаточно команды java -jar project1.jar — без -cp и имени класса.

Презентацию с видео можно скачать на Patreon.

Видео объяснение

Предпочитаете видеоформат? Посмотрите этот урок с примерами и объяснениями.

Комментарии

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

‹ Предыдущий урок Следующий урок ›