Что такое JAR-манифест в Java?

«Что такое JAR-манифест в Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

JAR-манифест — это специальный файл MANIFEST.MF, расположенный в папке META-INF/ JAR-архива. Он содержит метаданные о содержимом архива, необходимые для его корректной обработки JVM и инструментами сборки.

Основное назначение:

  • Точка входа: Атрибут Main-Class указывает класс с методом main() для запуска исполняемого JAR.
  • Зависимости: Атрибут Class-Path перечисляет относительные пути к другим библиотекам (JAR-файлам), от которых зависит приложение.
  • Версионирование: Содержит информацию о версии JAR-файла, версии спецификации и данные о создателе.

Пример содержимого META-INF/MANIFEST.MF:

Manifest-Version: 1.0
Created-By: 17.0.1 (Oracle Corporation)
Main-Class: com.example.Main
Class-Path: lib/dependency1.jar lib/dependency2.jar

Как работать с манифестом:

  • Чтение: Используйте класс java.util.jar.Manifest.
  • Создание: Манифест обычно генерируется автоматически инструментами сборки (Maven, Gradle). Для ручного создания можно использовать ключ -m утилиты jar или API java.util.jar.JarOutputStream.