Создание JAR-файла в IntelliJ IDEA — фундаментальный навык для любого Java-разработчика. Независимо от того, хотите ли вы поделиться своей программой с коллегами, запустить её на сервере или просто упаковать проект в удобный формат, этот процесс должен быть отточен до автоматизма. В этом подробном руководстве мы разберём все способы сборки, от простейшего до создания исполняемого JAR с зависимостями, и раскроем тонкости настройки манифеста.
Что такое JAR и зачем он нужен?
JAR (Java ARchive) — это формат архивных файлов, основанный на ZIP, специально созданный для распространения Java-приложений. Внутри него хранятся скомпилированные классы (.class), ресурсы (изображения, конфигурационные файлы) и метаданные (MANIFEST.MF). Главное преимущество — портативность: вы можете запустить приложение на любой машине с установленной JVM, просто выполнив команду java -jar your_app.jar.
Важно: JAR-файл не является исполняемым в привычном смысле (как .exe). Для его запуска обязательно требуется среда выполнения Java (JRE).
Подготовка проекта
Прежде чем собирать JAR, убедитесь, что ваш проект корректно компилируется и запускается прямо в IDE. Проверьте структуру проекта: исходный код должен находиться в директории src, а зависимости (библиотеки) правильно подключены. Для управления зависимостями рекомендуется использовать Maven или Gradle, но мы рассмотрим и ручной способ.
Шаг 1: Базовая сборка через Artifacts
- Откройте меню File → Project Structure (или нажмите Ctrl+Alt+Shift+S).
- Перейдите в раздел Artifacts и нажмите +.
- Выберите JAR → From modules with dependencies.
- В появившемся окне укажите главный класс (Main Class) — точку входа в ваше приложение.
- Настройте параметры извлечения зависимостей. Рекомендуется выбрать опцию "Copy to the output directory and link via manifest".
- Нажмите OK и примените изменения.
Шаг 2: Конфигурация манифеста
Манифест-файл (META-INF/MANIFEST.MF) — это сердце вашего JAR. Он содержит метаинформацию, включая главный класс и classpath. IntelliJ IDEA обычно генерирует его автоматически, но вы можете создать свой:
- В том же окне Artifacts найдите поле "Manifest File".
- Укажите путь, например,
src/main/resources/META-INF/MANIFEST.MF. - Создайте этот файл и добавьте строки:
Manifest-Version: 1.0
Main-Class: com.yourcompany.MainClass
Совет: Если в проекте используются внешние библиотеки, в манифесте нужно указать Class-Path: с перечислением всех JAR-файлов. IntelliJ может сделать это за вас при выборе соответствующей опции.
Шаг 3: Сборка и проверка
- В главном меню выберите Build → Build Artifacts.
- Выберите ваш артефакт и действие Build.
- Готовый JAR-файл появится в папке
out/artifacts/вашего проекта. - Протестируйте его, открыв терминал в этой директории и выполнив:
java -jar your_artifact.jar.
Продвинутые сценарии
Сборка с помощью Maven
Если ваш проект использует Maven, процесс становится проще. Добавьте плагин maven-jar-plugin или maven-shade-plugin в ваш pom.xml:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.yourcompany.MainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
Затем выполните в терминале IDEA команду mvn clean package. JAR-файл будет создан в папке target.
Создание "жирного" JAR (Fat/Uber JAR)
Fat JAR содержит все зависимости внутри себя, что делает его полностью самодостаточным. Для этого в Maven используйте maven-shade-plugin, а в Gradle — задачу shadowJar. В ручном режиме через Artifacts выберите опцию "Extract to the target JAR" для зависимостей.
Типичные проблемы и их решения
- "No main manifest attribute" — не указан главный класс в манифесте. Проверьте настройки Artifacts.
- ClassNotFoundException — зависимости не включены в classpath. Соберите Fat JAR или правильно настройте Class-Path в манифесте.
- Ошибки с версией Java — убедитесь, что версия JRE для запуска соответствует версии, использованной для компиляции.
FAQ — Часто задаваемые вопросы
В чём разница между JAR, WAR и EAR?
JAR — для стандартных приложений и библиотек, WAR — для веб-приложений, EAR — для корпоративных приложений, содержащих несколько модулей.
Можно ли создать исполняемый JAR без IDE?
Да, с помощью утилиты jar из JDK или сборщиков Maven/Gradle через командную строку.
Почему мой JAR-файл такой большой?
Вероятно, вы собрали Fat JAR со всеми зависимостями. Используйте инструменты анализа (например, jdeps) для оптимизации.
Как добавить иконку для JAR-файла в Windows?
JAR сам по себе не поддерживает иконки. Для этого нужно создать EXE-обёртку с помощью Launch4j, JSmooth или аналогичных утилит.
Можно ли запустить JAR на компьютере без установленной Java?
Нет, обязательно требуется JRE. Но вы можете создать нативное приложение с помощью GraalVM или использовать упаковщики (jpackage).