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

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

Узнайте, как создать и запустить приложение JAR с аргументами командной строки или без них

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

1. Обзор

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

В этой статье мы сосредоточимся на сценарии автономного приложения. В дальнейшем мы будем называть его приложением JAR.

В этом уроке мы сначала узнаем, как создать приложение JAR. Позже мы узнаем, как запускать приложение JAR с аргументами командной строки или без них|/.

2. Создайте приложение JAR

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

Файл JAR может иметь одну точку входа, установленную в файле манифеста . В этом случае файл JAR является исполняемым файлом JAR . Основной класс должен быть включен в этот файл JAR.

Прежде всего, давайте рассмотрим краткий пример того, как скомпилировать наши классы и создать исполняемый файл JAR с файлом манифеста:

$ javac com/baeldung/jarArguments/*.java
$ jar cfm JarExample.jar ../resources/example_manifest.txt com/baeldung/jarArguments/*.class

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

Вот как мы создадим неисполняемую банку без файла манифеста:

$ jar cf JarExample2.jar com/baeldung/jarArguments/*.class

3. Аргументы командной строки Java

Как и любое приложение, приложение JAR принимает любое количество аргументов, включая нулевые аргументы. Все зависит от потребностей приложения.

Это позволяет пользователю указать информацию о конфигурации при запуске приложения .

В результате приложение может избежать жестко закодированных значений и по-прежнему может обрабатывать множество различных вариантов использования.

Аргумент может содержать любые буквенно-цифровые символы, символы юникода и, возможно, некоторые специальные символы, разрешенные оболочкой, например”@”.

Аргументы разделяются одним или несколькими пробелами . Если аргумент должен содержать пробелы, они должны быть заключены между кавычками. Одинарные или двойные кавычки работают нормально.

Обычно для типичного приложения Java при вызове приложения пользователь вводит аргументы командной строки после имени класса.

Однако это не всегда относится к приложениям JAR.

Как мы уже обсуждали, точкой входа основного класса Java является метод main . Все аргументы являются String s и передаются в основной метод в виде массива String .

Тем не менее, внутри приложения мы можем преобразовать любой элемент массива String в другие типы данных, такие как char , int , double , их классы-оболочки, или другие соответствующие типы.

4. Запустите исполняемый файл JAR с аргументами

Давайте рассмотрим базовый синтаксис для запуска исполняемого файла JAR с аргументами:

java -jar jar-имя файла [args …]

Исполняемый файл JAR, созданный ранее, представляет собой простое приложение, которое просто выводит переданные аргументы. Мы можем запустить его с любым количеством аргументов. Ниже приведен пример с двумя аргументами:

$ java -jar JarExample.jar "arg 1" [email protected]

Мы увидим следующий вывод в консоли:

Hello Baeldung Reader in JarExample!
There are 2 argument(s)!
Argument(1):arg 1
Argument(2):[email protected]

Таким образом, при вызове исполняемого файла JAR нам не нужно указывать имя основного класса в командной строке . Мы просто добавляем наши аргументы после имени файла JAR. Если мы указываем имя класса после имени исполняемого файла JAR, оно просто становится первым аргументом для фактического основного класса.

В большинстве случаев приложение JAR-это исполняемый файл JAR. Исполняемый файл JAR может содержать не более одного основного класса, определенного в файле манифеста .

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

5. Запустите неисполняемую банку с аргументами

Чтобы запустить приложение в неисполняемом файле JAR, мы должны использовать опцию -cp вместо -jar . Мы будем использовать параметр -cp (сокращение от classpath), чтобы указать файл JAR, содержащий файл класса, который мы хотим выполнить:

java -cp jar-file-name main-class-name [args …]

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

Неисполняемый JAR, созданный ранее, содержит то же самое простое приложение. Мы можем бежать

$ java -cp JarExample2.jar com.baeldung.jarArguments.JarExample "arg 1" [email protected]

Неисполняемый JAR, созданный ранее, содержит то же самое простое приложение. Мы можем бежать

Hello Baeldung Reader in JarExample!
There are 2 argument(s)!
Argument(1):arg 1
Argument(2):[email protected]

Неисполняемый JAR, созданный ранее, содержит то же самое простое приложение. Мы можем бежать

В этом уроке мы изучили два способа запуска приложения JAR в командной строке с аргументами или без них.

Мы также продемонстрировали, что аргумент может содержать пробелы и специальные символы (если это разрешено оболочкой).

Как всегда, код для примеров доступен на GitHub .