Introduzione
È abbastanza comune eseguire applicazioni dalla riga di comando usando argomenti. Specialmente sul lato server. Di solito, non vogliamo che l’applicazione faccia la stessa cosa ad ogni esecuzione: vogliamo configurare il suo comportamento in qualche modo.
In questo breve tutorial, esploreremo come possiamo gestire gli argomenti della riga di comando in Java.
Accettare gli argomenti della riga di comando in Java
Siccome il metodo main è il punto di ingresso di un’applicazione Java, la JVM passa gli argomenti della riga di comando attraverso i suoi arguments.
Il modo tradizionale è di usare un array di stringhe:
public static void main(String args) { // handle arguments}
Tuttavia, Java 5 ha introdotto i varargs, che sono array travestiti da pecore. Pertanto, possiamo definire il nostro main con una varargs String:
public static void main(String... args) { // handle arguments}
Sono identici, quindi la scelta tra loro è interamente a gusto personale e preferenza.
Il parametro del metodo main contiene gli argomenti della linea di comando nello stesso ordine in cui li abbiamo passati all’esecuzione. Se vogliamo accedere a quanti argomenti abbiamo ottenuto, dobbiamo solo controllare la lunghezza dell’array.
Per esempio, possiamo stampare il numero di argomenti e il loro valore sullo standard output:
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); }}
Nota che in alcune lingue, il primo argomento sarà il nome dell’applicazione. D’altra parte, in Java, questo array contiene solo gli argomenti.
Come passare gli argomenti della riga di comando
Ora che abbiamo un’applicazione che gestisce gli argomenti della riga di comando, siamo ansiosi di provarla. Vediamo quali opzioni abbiamo.
3.1. Linea di comando
Il modo più ovvio è la linea di comando. Supponiamo di aver già compilato la classe com.baeldung.commandlinearguments.CliExample con il nostro metodo principale.
Poi possiamo eseguirlo con il seguente comando:
java com.baeldung.commandlinearguments.CliExample
Produce il seguente output:
Argument count: 0
Ora, possiamo passare argomenti dopo il nome della classe:
java com.baeldung.commandlinearguments.CliExample Hello World!
E l’output è:
Argument count: 2Argument 0: HelloArgument 1: World!
Di solito, pubblichiamo la nostra applicazione come un file jar, non come un mucchio di file .class file. Diciamo che l’abbiamo impacchettata in cli-example.jar, e abbiamo impostato com.baeldung.commandlinearguments.CliExample come classe principale.
Ora possiamo eseguirlo senza argomenti nel seguente modo:
java -jar cli-example.jar
O con argomenti:
java -jar cli-example.jar Hello World!Argument count: 2 Argument 0: Hello Argument 1: World!
Nota, Java tratterà ogni argomento che passiamo dopo il nome della classe o il nome del file jar come argomenti della nostra applicazione. Pertanto, tutto ciò che passiamo prima sono argomenti per la JVM stessa.
3.2. Eclipse
Mentre lavoriamo sulla nostra applicazione, vogliamo controllare se funziona come vogliamo.
In Eclipse, possiamo eseguire applicazioni con l’aiuto di configurazioni di esecuzione. Per esempio, una configurazione di esecuzione definisce quale JVM usare, qual è il punto di ingresso, il classpath, e così via. E, naturalmente, possiamo specificare gli argomenti della riga di comando.
Il modo più semplice per creare una configurazione di esecuzione appropriata è quello di cliccare con il tasto destro del mouse sul nostro metodo principale, quindi scegliere Run As > Java Application dal menu contestuale:
Con questo, eseguiamo immediatamente la nostra applicazione con impostazioni che onorano le nostre impostazioni di progetto.
Per fornire argomenti, dovremmo poi modificare la configurazione di esecuzione. Possiamo farlo attraverso l’opzione di menu Run > Run Configurations…. Qui, dovremmo cliccare sulla scheda Arguments e riempire la casella di testo Program arguments:
Premendo Run verrà eseguita l’applicazione e verranno passati gli argomenti appena inseriti.
3.3. IntelliJ
IntelliJ usa un processo simile per eseguire le applicazioni. Chiama queste opzioni semplicemente come configurazioni.
Prima di tutto, dobbiamo cliccare con il tasto destro del mouse sul metodo main, poi scegliere Run ‘CliExample.main()’:
Questo eseguirà il nostro programma, ma lo aggiungerà anche alla lista Run per ulteriori configurazioni.
Quindi, per configurare gli argomenti, dovremmo scegliere Run > Edit Configurations… e modificare la casella di testo Program arguments:
Dopo questo, dovremmo premere OK e rilanciare la nostra applicazione, per esempio con il pulsante run nella toolbar.
3.4. NetBeans
NetBeans si allinea anch’esso con i suoi processi di esecuzione e configurazione.
Dovremmo prima eseguire la nostra applicazione cliccando con il tasto destro sul metodo principale e scegliendo Run File:
Come prima, questo crea una configurazione di esecuzione ed esegue il programma.
In seguito, dobbiamo configurare gli argomenti nella configurazione di esecuzione. Possiamo farlo scegliendo Run > Set Project Configuration > Customize… Poi dovremmo Run sulla sinistra e riempire il campo di testo Arguments:
Dopo questo, dovremmo premere OK e avviare l’applicazione.
Biblioteche di terze parti
La gestione manuale degli argomenti della riga di comando è semplice in scenari semplici. Tuttavia, man mano che i nostri requisiti diventano sempre più complessi, lo stesso vale per il nostro codice. Pertanto, se vogliamo creare un’applicazione con più opzioni a riga di comando, sarebbe più facile utilizzare una libreria di terze parti.
Fortunatamente, ci sono una pletora di queste librerie che supportano la maggior parte dei casi d’uso. Due esempi popolari sono Picocli e Spring Shell.
Conclusione
È sempre una buona idea rendere configurabile il comportamento della propria applicazione. In questo articolo abbiamo visto come farlo usando gli argomenti della linea di comando. Inoltre, abbiamo coperto vari modi per passare questi argomenti.
Come al solito, gli esempi sono disponibili su GitHub.
Inizia con Spring 5 e Spring Boot 2, attraverso il corso Learn Spring:
>> CHECK OUT THE COURSE