#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
Большая часть этой информации обычно в любом случае доступна для чтения человеком и машиной.