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

1. Въведение

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

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

2. Достъп до аргументи от командния ред в Java

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

Традиционният начин е да се използва масив String :

public static void main(String[] args) { // handle arguments }

Java 5 обаче представи varargs, които са масиви в овчи дрехи. Следователно можем да дефинираме нашето основно с String vararg:

public static void main(String... args) { // handle arguments }

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

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

Например, можем да отпечатаме броя на аргументите и тяхната стойност на стандартния изход:

public static void main(String[] args) { System.out.println("Argument count: " + args.length); for (int i = 0; i < args.length; i++) { System.out.println("Argument " + i + ": " + args[i]); } }

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

3. Как да предавам аргументи от командния ред

Сега, когато имаме приложение, което обработва аргументи от командния ред, сме нетърпеливи да го изпробваме. Нека да видим какви опции имаме.

3.1. Командна линия

Най-очевидният начин е командният ред. Да приемем, че вече сме компилирали класа com.baeldung.commandlinearguments.CliExample с нашия основен метод в него.

Тогава можем да го стартираме със следната команда:

java com.baeldung.commandlinearguments.CliExample

Той дава следния изход:

Argument count: 0

Сега можем да предадем аргументи след името на класа:

java com.baeldung.commandlinearguments.CliExample Hello World!

И изходът е:

Argument count: 2 Argument 0: Hello Argument 1: World!

Обикновено публикуваме нашето приложение като jar файл, а не като група .class файлове. Да кажем, опаковахме го в cli-example.jar и зададохме com.baeldung.commandlinearguments.CliExample като основен клас.

Сега можем да го стартираме без аргументи по следния начин:

java -jar cli-example.jar

Или с аргументи:

java -jar cli-example.jar Hello World! Argument count: 2 Argument 0: Hello Argument 1: World!

Имайте предвид, че Java ще третира всеки аргумент, който предадем след името на класа или името на файла на jar, като аргументи на нашето приложение . Следователно всичко, което предаваме преди това, е аргумент за самия JVM.

3.2. Затъмнение

Докато работим по нашето приложение, ще искаме да проверим дали работи по начина, по който искаме.

В Eclipse можем да стартираме приложения с помощта на конфигурации за изпълнение. Например конфигурацията за изпълнение определя кой JVM да се използва, каква е входната точка, пътя на класа и т.н. И разбира се, можем да посочим аргументи от командния ред.

Най-лесният начин да създадете подходяща конфигурация за изпълнение е да щракнете с десния бутон на мишката върху нашия основен метод, след което изберете Run As> Java Application от контекстното меню:

С това ние незабавно стартираме нашето приложение с настройки, които уважават настройките на нашия проект.

За да предоставим аргументи, трябва да редактираме тази конфигурация на изпълнение. Можем да го направим чрез опцията от менюто Run> Run Configurations ... Тук трябва да щракнем върху раздела Аргументи и да попълним текстовото поле Аргументи на програмата :

Натискането на Run ще стартира приложението и ще предаде аргументите, които току-що въведохме.

3.3. IntelliJ

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

Първо трябва да щракнем с десния бутон на мишката върху основния метод, след което да изберем „CliExample.main ()“:

This will run our program, but it will also add it to the Run list for further configuration.

So, then to configure arguments, we should choose Run > Edit Configurations… and edit the Program arguments textbox:

After that, we should hit OK and rerun our application, for example with the run button in the toolbar.

3.4. NetBeans

NetBeans also falls into line with its running and configuration processes.

We should run our application first by right-clicking on the main method and choosing Run File:

Like before, this creates a run configuration and runs the program.

Next, we have to configure the arguments in that run configuration. We can do that by choosing Run > Set Project Configuration > Customize… Then we should Run on the left and fill the Arguments text field:

After that, we should hit OK and start the application.

4. Third-Party Libraries

Manual handling of the command-line arguments is straightforward in simple scenarios. However, as our requirements become more and more complex, so does our code. Therefore, if we want to create an application with multiple command-line options, it would be easier to use a third-party library.

Fortunately, there're a plethora of those libraries which support most use cases. Two popular examples are Picocli and Spring Shell.

5. Conclusion

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

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