Рубрики
Без рубрики

ява.ланг.Исключение ArrayIndexOutOfBoundsException Как запустить файл JAR

Запустите файл Jar, Как запустить файл jar, java jar, файл java jar, java run jar, Основной класс в MANIFEST.MF, команда jar, точка входа java jar, путь к классу jar.

Автор оригинала: Pankaj Kumar.

Сегодня мы узнаем, как запустить JAR – файл на java. В последнем уроке мы узнали, как создать файл jar . Здесь мы узнаем, как запустить файл jar из командной строки и некоторые другие аспекты использования файла jar.

Как запустить файл JAR

Мы можем запустить файл jar с помощью команды java, но для этого требуется Основной класс запись в файле манифеста jar.

Основной класс является точкой входа в jar и используется командой java для выполнения класса. Структура моего проекта выглядит так, как показано на рисунке ниже.

Мне нужно добавить файл манифеста в файл jar, поэтому я создам файл манифеста с приведенными ниже деталями.

Мне нужно добавить файл манифеста в файл jar, поэтому я создам файл манифеста с приведенными ниже деталями.

Main-Class: com.journaldev.util.MyUtil

Теперь мы будем использовать команду jar для создания файла jar с данными нашего файла манифеста.

pankaj@JD:~/CODE/MyProject/bin$ jar cvfm MyProject.jar manifest.txt com
added manifest
adding: com/(in = 0) (out= 0)(stored 0%)
adding: com/journaldev/(in = 0) (out= 0)(stored 0%)
adding: com/journaldev/test/(in = 0) (out= 0)(stored 0%)
adding: com/journaldev/test/MyTest.class(in = 444) (out= 303)(deflated 31%)
adding: com/journaldev/util/(in = 0) (out= 0)(stored 0%)
adding: com/journaldev/util/MyUtil.class(in = 444) (out= 304)(deflated 31%)

Теперь, когда я распаковываю и проверяю содержимое файла MANIFEST.MF, он содержит следующие данные.

Manifest-Version: 1.0
Created-By: 1.6.0_37 (Apple Inc.)
Main-Class: com.journaldev.util.MyUtil

Записи версии манифеста и Созданные пользователем добавляются командой jar. Теперь мы готовы запустить файл jar через командную строку.

Запустите файл Jar из командной строки

pankaj@JD:~/CODE/MyProject/bin$ java -jar MyProject.jar 
MyUtil main method

Итак, он выполнил основной метод MyUtil. Это здорово, когда у нас есть один класс с основным методом.

Что делать, если в моем проекте несколько точек входа, и я хочу изменить точку входа, не создавая снова банку. Таким образом, мы можем использовать команду jar для обновления файла манифеста.

Для обновления файла с помощью команды jar структура файла должна быть аналогичной, иначе он добавит новый файл в другой каталог. Так как файл манифеста находится по адресу META-INF/MANIFEST.MF . Мы переименуем manifest.txt чтобы МАНИФЕСТИРОВАТЬ.MF и поместить его в каталог META-INF. Затем выполните приведенную ниже команду, чтобы обновить точку входа.

pankaj@JD:~/CODE/MyProject/bin$ jar uvfm MyProject.jar META-INF/MANIFEST.MF 
Jan 30, 2013 5:40:27 PM java.util.jar.Attributes read
WARNING: Duplicate name in Manifest: Main-Class.
Ensure that the manifest does not have duplicate entries, and
that blank lines separate individual sections in both your
manifest and in the META-INF/MANIFEST.MF entry in the jar file.
updated manifest

Обратите внимание, что предупреждение вызвано дублированием записей, и файл манифеста может содержать только одну запись для каждого мета-свойства, но он все равно обновляет точку входа, обновляя файл манифеста. Теперь, когда вы запустите jar, он выполнит измененный класс записи.

Что делать, если мы не хотим менять точку входа, но хотим выполнить другой класс из файла jar. Это кажется запутанным, но решение действительно простое. Все, что вам нужно сделать, это добавить jar в путь к классу, а затем выполнить класс как обычный класс java с основным методом.

pankaj@JD:~/CODE/MyProject/bin$ java -cp MyProject.jar com.journaldev.util.MyUtil
MyUtil main method

Это все для того, чтобы запустить файл jar на java с одной точкой входа, разными точками входа и вообще без какой-либо точки входа, используя путь к классам java.

Ссылка: Документация Oracle