java manifest main class

If you have an application bundled in a JAR file, you need some way to indicate which class within the JAR file is your application’s entry point. You provide this information with the Main-Class header in the manifest, which has the general form:

The value classname is the name of the class that is your application’s entry point.

Recall that the entry point is a class having a method with signature public static void main(String[] args) .

After you have set the Main-Class header in the manifest, you then run the JAR file using the following form of the java command:

The main method of the class specified in the Main-Class header is executed.

Содержание

  1. An Example
  2. Setting an Entry Point with the JAR Tool
  3. Manifest
  4. JAR пример
  5. Создание Jar файла

An Example

We want to execute the main method in the class MyClass in the package MyPackage when we run the JAR file.

We first create a text file named Manifest.txt with the following contents:

We then create a JAR file named MyJar.jar by entering the following command:

This creates the JAR file with a manifest with the following contents:

When you run the JAR file with the following command, the main method of MyClass executes:

Setting an Entry Point with the JAR Tool

The ‘e’ flag (for ‘entrypoint’) creates or overrides the manifest’s Main-Class attribute. It can be used while creating or updating a JAR file. Use it to specify the application entry point without editing or creating the manifest file.
For example, this command creates app.jar where the Main-Class attribute value in the manifest is set to MyApp :

You can directly invoke this application by running the following command:

Manifest

JAR пример

Манифест – это файл с расширением MF, который создаётся всегда, когда формируется Jar файл (за исключением случая, когда в команде на создание Jar файла указана опция M, не спутайте её с опцией m).

Этот создаваемый Jar инструментами манифест назовём манифестом по умолчанию (default manifest). Каждая строка файла манифеста – разделённая двоеточием пара “имя: значение”. Содержание манифеста по умолчанию можно изменить следующим образом. В папке bin нашего проекта создайте текстовый файл MANIFEST.txt, получим:

Введите текст в MANIFEST.txt:

и переведите курсор на новую строку, это важно:

Обратите внимание, на картинке курсор в начале новой строки. Сохраните текстовый файл MANIFEST.txt. В MANIFEST.txt мы объявили главный класс приложения. Наш класс находится в пакете myPack, это отражено в MANIFEST.txt: myPack.JarClass.

Ещё раз. Файл манифеста MANIFEST.MF автоматически создаётся всегда (если нет M в команде). Тогда для чего мы создали ещё какой-то MANIFEST.txt? Для того, чтобы изменить содержание дефолтного манифеста, т.е. MANIFEST.MF. При создании файла Jar строки из нашего MANIFEST.txt добавятся в файл MANIFEST.MF.

Создание Jar файла

Правой кнопкой по значку MyJar.bat -> Изменить и вносим такой текст:

Получаем:

Сохраните MyJar.bat. Теперь можно создать jar файл: два клика по MyJar.bat и через секунду получаем JarFile.jar:

Проверим работу полученного JarFile.jar: два раза кликаем по JarFile.jar и видим знакомое окно:

Файл манифеста содержится внутри архива JAR по пути “META-INF/MANIFEST.MF”. Он содержит информацию, которая позволяет указывать версию, производителя, цифровую подпись, дополнительные пути поиска классов и многое другое.

Пример файла “MANIFEST.MF”:

Как видите, файл состоит из ключей и их значений, разделённый символом «:». В нашем случае указывается версия спецификации манифеста 1.0, и что jar был создал 1.6.0_26-b03 (Sun Microsystems Inc.).

Пока эта информация не очень полезна. Но файл манифеста может содержать входную точку программы, например:

Здесь мы указали, что класс App в пакете ru.urvanov.javaexamples.springjavamailsenderimpl содержит статический метод main , который и должен запускаться при запуске Jar-файла командой:

Также в файле манифеста бывают различные секции. Секции обычно отделяются друг от друга пустой строкой и содержат название секции (пакета Java), для которого указываются отдельные атрибуты. Примерно так:

Файл манифеста должен быть в кодировке UTF-8 и может использовать переводы строк CR+LF, LF или просто CR.

Последняя строка в файле манифеста обязательно должна заканчиваться переводом строки!

Из самого кода на Java мы можем вручную считывать и обрабатывать файлы манифеста, если это необходимо. Для этого используется класс java . util . jar . Manifest . Напишем небольшой пример его использования. Считывать будем следующий файл манифеста:

Источник: computermaker.info

Техника и Гаджеты
Добавить комментарий