2 ответов:
содержимое файла манифеста в файле JAR, созданном с версией 1.0 комплекта разработки Java, выглядит следующим образом.
Manifest-Version: 1.0все записи представлены в виде пар имя-значение. Имя заголовка отделяется от его значения двоеточием. Манифест по умолчанию показывает, что он соответствует версии 1.0 спецификации манифеста. Манифест также может содержать информацию о других файлах, которые упакованы в архив. Какая именно информация о файле записывается в манифест будет зависеть от предполагаемого использования файла JAR. Файл манифеста по умолчанию не предполагает, какую информацию он должен записывать о других файлах, поэтому его единственная строка содержит данные только о себе. Заголовки Манифеста Специального Назначения
в зависимости от предполагаемой роли файла JAR может потребоваться изменить манифест по умолчанию. Если файл JAR создается только с целью архивирования, то манифест.MF файл не имеет никакой цели. Большинство применений файлов JAR выходят за рамки простое архивирование и сжатие и требуют специальной информации, чтобы быть в файле манифеста. Ниже приведены краткие описания заголовков, которые требуются для некоторых специальных функций JAR-файла
приложения в комплекте с файлами JAR: если приложение входит в состав файла JAR, виртуальной машине Java необходимо сообщить, какова точка входа в приложение. Точкой входа является любой класс с открытым статическим void main (String[] args) метод. Этот информация предоставляется в заголовке основного класса, который имеет общий вид:
Main-Class: classnameзначение classname должно быть заменено точкой входа приложения.
Скачать Расширения: расширения загрузки-это файлы JAR, на которые ссылаются файлы манифеста других файлов JAR. В типичной ситуации апплет будет упакован в файл JAR, манифест которого ссылается на файл JAR (или несколько файлов JAR), который будет служить расширением для цели этого апплета. Расширения могут ссылаться друг на друга таким же образом. Расширения загрузки указываются в поле заголовка Class-Path в файле манифеста апплета, приложения или другого расширения. Заголовок пути к классу может выглядеть следующим образом, например:
Class-Path: servlet.jar infobus.jar acme/beans.jarС этим заголовком классы в сервлете файлов.баночка, инфобус.баночка, и акме / бобы.jar будет служить в качестве расширений для целей апплета или приложения. URL-адреса в заголовке Class-Path задаются относительный URL-адрес файла jar апплета или приложения.
Пакета Запечатывания: пакет в файле JAR может быть дополнительно запечатан, что означает, что все классы, определенные в этом пакете, должны быть заархивированы в одном файле JAR. Пакет может быть запечатан для обеспечения согласованности версий между классами в вашем программном обеспечении или в качестве меры безопасности. Чтобы запечатать пакет, необходимо добавить заголовок имени для пакета, а затем запечатанный заголовок, подобный это:
Name: myCompany/myPackage/ Sealed: trueзначение заголовка Name-это относительный путь пакета. Обратите внимание, что он заканчивается на '/', чтобы отличить его от имени. Любые заголовки, следующие за заголовком имени, без каких-либо промежуточных пустых строк применяются к файлу или пакету, указанному в заголовке имени. В приведенном выше примере, поскольку запечатанный заголовок возникает после имени: mycompany / mypackage header, без пустых строк между ними, запечатанный заголовок будет интерпретироваться как применяющийся (только) к пакету myCompany / myPackage.
Управление Версиями Пакета: спецификация управления версиями пакета определяет несколько заголовков манифеста для хранения информации об управлении версиями. Каждому пакету может быть присвоен один набор таких заголовков. Заголовки управления версиями должны отображаться непосредственно под заголовком имени пакета. В этом примере показаны все заголовки управления версиями:
Name: java/util/ Specification-Title: "Java Utility Classes" Specification-Version: "1.2" Specification-Vendor: "Sun Microsystems, Inc.". Implementation-Title: "java.util" Implementation-Version: "build57" Implementation-Vendor: "Sun Microsystems, Inc."
Манифест.MF содержит информацию о файлах, содержащихся в файле JAR.
всякий раз, когда файл JAR создается манифест по умолчанию.mf файл создается внутри папки META-INF и содержит записи по умолчанию, такие как:
Manifest-Version: 1.0 Created-By: 1.7.0_06 (Oracle Corporation)это записи в виде пар "заголовок: значение". Первый указывает версию манифеста, а второй-версию JDK, с которой создается файл JAR.
заголовок основного класса: Когда баночка файл используется для связывания приложения в пакет, нам нужно указать класс, обслуживающий точку входа приложения. Мы предоставляем эту информацию, используя заголовок 'Main-Class' файла манифеста,
главный класс: {полное имя класса}
значение 'Main-Class'здесь-это класс, имеющий метод main. После указания этой записи мы можем выполнить файл JAR для запуска приложения.
заголовок Class-Path: В большинстве случаев нужно доступ к другим файлам JAR из классов, упакованных внутри файла JAR приложения. Это можно сделать, указав их полные пути в файле манифеста с помощью заголовка 'Class-Path',
путь к классу: {jar1-имя jar2-название каталога-наименование/jar3-имя}
этот заголовок можно использовать для указания внешних файлов JAR в той же локальной сети, а не внутри текущей JAR.
заголовки, связанные с версией пакета: Когда файл JAR используется для управление версиями пакета следующие заголовки используются в соответствии со спецификацией языка Java:
Headers in a manifest Header | Definition ------------------------------------------------------------------- Name | The name of the specification. Specification-Title | The title of the specification. Specification-Version | The version of the specification. Specification-Vendor | The vendor of the specification. Implementation-Title | The title of the implementation. Implementation-Version | The build number of the implementation. Implementation-Vendor | The vendor of the implementation.заголовки пакета герметизируя родственные:
мы также можем указать, должны ли какие-либо конкретные пакеты внутри файла JAR быть запечатаны, что означает, что все классы, определенные в этом пакете, должны быть заархивированы в одном файле JAR. Это можно указать с помощью заголовка’ Sealed',
имя: {package / some-пакет/} Запечатано: правда
здесь, имя пакета должно заканчиваться ‘/’.
повышение безопасности с помощью файлов манифеста:
мы можем использовать записи файлов манифеста для обеспечения безопасности веб-приложения или апплета его пакеты с различными атрибутами, как "разрешения", "Codebae", "имя приложения", "доверенные только" и многое другое.
папка META-INF:
в этой папке находится манифест файл находится. Кроме того, он может содержать больше файлов, содержащих метаданные о приложении. Например, в файле JAR модуля EJB эта папка содержит дескриптор развертывания EJB для модуля EJB вместе с файлом манифеста для JAR. Кроме того, он содержит xml-файл, содержащий отображение абстрактных ссылок EJB на конкретные ресурсы контейнера сервера приложений, на котором он будет находиться бежать.
Reference:
https://docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.html
Comments