Файлы манифеста Java

#java #manifest #bundle

#java #манифест #пакет

Вопрос:

Я пытаюсь разобраться в этих файлах, кажется, я могу найти чтение, которое упрощает понимание и запоминание. Может ли кто-нибудь объяснить файлы манифеста и зачем они были созданы? Также было бы полезно получить пояснения по пакетам.

Пожалуйста, и спасибо вам

Комментарии:

1. Просто поиск в Google «файлы манифеста Java» выдает несколько полезных ссылок — download.oracle.com/javase/tutorial/deployment/jar /… . Если это не поможет, я думаю, вы могли бы задать более конкретный вопрос.

Ответ №1:

«Манифест» в Java обычно означает META-INF/MANIFEST.MF файл внутри файла jar.

Он добавляет метаданные о файле .jar и его содержимом.

Наиболее распространенным использованием, вероятно, является указание основного класса файла jar (через Main-Class атрибут), чтобы разрешить прямое выполнение файла jar (с помощью java -jar myFile.jar ).

Другие варианты использования:

  • сохраняйте хэши сохраненных файлов для проверки подписи
  • запечатывание файлов jar (т.е. убедитесь, что в пакеты, определенные в этом файле jar, загружены только классы из этого файла jar).
  • храните информацию о версии / продукте / производителе, чтобы ее можно было прочитать во время выполнения

Этот общий механизм Java объясняется в этом руководстве.

Поскольку вы также упоминаете пакеты, возможно, что вы на самом деле говорите о манифесте пакета OSGi, который строится поверх этого механизма для превращения простого файла jar в пакет (он же «модуль», иногда «плагин»).

Ответ №2:

На платформе Java файл манифеста — это определенный файл, содержащийся в архиве JAR. Он используется для определения расширения и данных, связанных с пакетом. Это файл метаданных, который содержит пары имя-значение, организованные в разные разделы. Если файл JAR предназначен для использования в качестве исполняемого файла, файл манифеста указывает основной класс приложения. Файл манифеста называется MANIFEST.MF .

Ответ №3:

Насколько я знаю, используются манифесты:

  • чтобы предоставить читаемую человеком информацию о конкретном jar: например, версия, производитель, jdk, для которого он был создан, возможно, идентификатор сборки сервера непрерывной интеграции и так далее
  • для предоставления машиночитаемой информации, такой как зависимости модулей, в рамках, подобных OSGi

Большая часть этой информации обычно в любом случае доступна для чтения человеком и машиной.