Spec-Zone .ru
спецификации, руководства, описания, API
|
Если Вам связали приложение в файле JAR, Вы нуждаетесь в некотором способе указать, который class в пределах файла JAR является точкой входа Вашего приложения. Вы предоставляете эту информацию с Main-Class
заголовок в декларации, у которой есть общая форма:
Main-Class: classname
Значение classname
имя class, который является точкой входа Вашего приложения.
Вспомните, что точкой входа является class, имеющий метод с подписью public static void main(String[] args)
.
После того, как Вы установили Main-Class
заголовок в декларации, Вы тогда выполняете файл JAR, используя следующую форму java
команда:
java -jar JAR-name
main
метод class, определенного в Main-Class
заголовок выполняется.
Мы хотим выполниться main
метод в class MyClass
в пакете MyPackage
когда мы выполняем файл JAR.
Мы сначала создаем названный текстовый файл Manifest.txt
со следующим содержанием:
Main-Class: MyPackage.MyClass
Мы тогда создаем названный файл JAR MyJar.jar
вводя следующую команду:
jar cfm MyJar.jar Manifest.txt MyPackage/*.class
Это создает файл JAR с декларацией со следующим содержанием:
Manifest-Version: 1.0 Created-By: 1.6.0 (Sun Microsystems Inc.) Main-Class: MyPackage.MyClass
Когда Вы выполняете файл JAR со следующей командой, main
метод MyClass
выполняется:
java -jar MyJar.jar
Флаг 'e' (для 'entrypoint'), представленный в JDK 6, создает или переопределяет декларацию Main-Class
атрибут. Это может использоваться, создавая или обновляя файл фляги. Используйте это, чтобы определить точку входа приложения, не редактируя или создавая файл манифеста.
Например, эта команда создает app.jar
где Main-Class
значение атрибута в декларации устанавливается в MyApp
:
jar cfe app.jar MyApp MyApp.class
Можно непосредственно вызвать это приложение, выполняя следующую команду:
java -jar app.jar
Если entrypoint имя class находится в пакете, оно может использовать '.' (точечный) символ в качестве разделителя. Например, если Main.class
находится в вызванном пакете foo
точка входа может быть определена следующими способами:
jar cfe Main.jar foo.Main foo/Main.class