Стартирайте Java приложение от командния ред

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 файл, който няма дефиниран Main-Class във файла на манифеста. Както ще видим по-късно, все още можем да стартираме основен клас, който се съдържа в самия JAR файл.

Ето как бихме създали неизпълним JAR без манифестен файл:

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

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

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

Това позволява на потребителя да посочи информация за конфигурацията при стартиране на приложението .

В резултат на това приложението може да избегне твърдо кодирани стойности и все още може да обработва много различни случаи на употреба.

Аргументът може да съдържа всякакви буквено-цифрови символи, символи на unicode и евентуално някои специални символи, разрешени от обвивката, например '@'.

Аргументите са разделени от едно или повече интервали . Ако аргументът трябва да съдържа интервали, интервалите трябва да бъдат затворени между кавички. Или единични кавички, или двойни кавички работят добре.

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

Въпреки това не винаги е така за JAR приложенията.

Както вече обсъдихме, точката на влизане на основния клас на Java е основният метод. Всички аргументи са String s и се предават на основния метод като String масив.

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

4. Стартирайте изпълним JAR с аргументи

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

java -jar jar-file-name [аргументи ...]

Създаденият по-рано изпълним 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 с аргументи

За да стартирате дадено приложение на не-изпълним JAR файл, трябва да използваме -СР опция вместо -jar . Ще използваме опцията -cp (съкратено от classpath), за да посочим JAR файла, който съдържа файла на класа, който искаме да изпълним:

java -cp jar-file-name име на основен клас [аргументи ...]

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

Неизпълнимият JAR, създаден по-рано, съдържа същото просто приложение. Можем да го изпълним с всякакви (включително нула) аргументи. Ето пример с два аргумента:

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

И, както видяхме по-горе, ще видим следния изход:

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

6. Заключение

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

Също така демонстрирахме, че аргументът може да съдържа интервали и специални символи (когато е разрешено от черупката).

Както винаги, кодът за примерите е достъпен в GitHub.