Как создать и выполнить файл .Jar в терминале Linux

by itisgood

JAR (Java ARchive) – это  независимый от платформы формат файла, используемый для объединения многих файлов классов Java и связанных с ними метаданных и ресурсов, таких как текст, изображения и т. д., в один файл для распространения.

Он позволяет Java-средам эффективно разворачивать целое приложение в одном архиве и предоставляет множество преимуществ, таких как безопасность, его элементы могут быть сжаты, сокращено время загрузки, позволяетcz уплотнение пакетов и управление версиями, поддерживает переносимость.

Он также поддерживает упаковку для расширений.

В этой статье мы покажем, как создать простое приложение Java и связать его с JAR-файлом и продемонстрируем, как выполнить файл .jar из терминала Linux.

Для этого у вас должен быть установлен инструмент командной строки java для запуска приложения Java и флаг -jar для выполнения программы, инкапсулированной в файл JAR.

Когда этот флаг используется, указанный JAR-файл является источником всех пользовательских классов, а другие параметры пути класса игнорируются.

Как создать JAR-файл в Linux

1. Сначала начните с написания простого Java-класса с основным методом для приложения TecmintApp для демонстрационных целей.

$ vim TecmintApp.java

Скопируйте и вставьте следующий код в файл TecmintApp.java.

public class TecmintApp {
public static void main(String[] args){
System.out.println(" Just executed TecmintApp! ");
}
}

Сохраните файл и закройте.

2. Затем нам нужно скомпилировать и упаковать класс в JAR-файл, используя утилиты javac и jar, как показано ниже:

$ javac -d . TecmintApp.java
$ ls
$ jar cvf tecmintapp.jar TecmintApp.class
$ ls

3. Создана Ounce tecmint app.jar, теперь вы можете выполнить файл с помощью команды java, как показано ниже:

 

$ java -jar tecmintapp.jar
no main manifest attribute, in tecmintapp.jar

Из вывода приведенной выше команды видно, что мы столкнулись с ошибкой. JVM (Java Virtual Machine) не смог найти наш основной атрибут, поэтому он не смог найти основной класс, содержащий основной метод (public static void main (String [] args)).

Файл JAR должен иметь манифест, содержащий строку в форме Main-Class: classname, которая определяет класс с основным методом, который служит отправной точкой нашего приложения.

4. Чтобы исправить вышеуказанную ошибку, нам нужно будет обновить JAR-файл, чтобы включить атрибут манифеста вместе с нашим кодом.

Давайте создадим файл MANIFEST.MF.

$ vim MANIFEST.MF

Скопируйте и вставьте следующую строку в файл MANIFEST.MF.

Main-Class:  TecmintApp

Сохраните файл и добавьте файл MANIFEST.MF в наш tecmintapp.jar, используя следующую команду:

$ jar cvmf MANIFEST.MF tecmintapp.jar TecmintApp.class

5. Наконец, когда мы снова выполним  файл JAR, он должен предоставить нам ожидаемый результат, как показано на выводе:

$ java -jar tecmintapp.jar
Just executed TecmintApp!

Для получения дополнительной информации см. Man-страницы java, javac и jar.

$ man java
$ man javac
$ man jar

 

You may also like

1 comment

Karter 27.06.2023 - 12:44

Зачем в два этапа создавать jar, а затем импортировать в него манифест, если можно сделать это одной командой?

jar cfe tecmintapp.jar TecmintApp TecmintApp.class

Reply

Leave a Comment