Esegui un'applicazione Java dalla riga di comando

1. Panoramica

In genere, ogni applicazione significativa include uno o più file JAR come dipendenze. Tuttavia, a volte un file JAR stesso rappresenta un'applicazione autonoma o un'applicazione web.

Ci concentreremo sullo scenario dell'applicazione standalone in questo articolo. Di seguito, la chiameremo applicazione JAR.

In questo tutorial, impareremo prima come creare un'applicazione JAR. Successivamente, impareremo come eseguire un'applicazione JAR con o senza argomenti della riga di comando .

2. Creare un JAR Application

Un file JAR può contenere una o più classi principali. Ogni classe principale è il punto di ingresso di un'applicazione . Quindi, in teoria, un file JAR può contenere più di un'applicazione, ma deve contenere almeno una classe principale per poter essere eseguito.

Un file JAR può avere un punto di ingresso impostato nel suo file manifest . In questo caso, il file JAR è un JAR eseguibile. La classe principale deve essere inclusa in quel file JAR.

Prima di tutto, vediamo un rapido esempio di come compilare le nostre classi e creare un JAR eseguibile con un file manifest:

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

Un JAR non eseguibile è semplicemente un file JAR che non ha una classe principale definita nel file manifest. Come vedremo più avanti, possiamo ancora eseguire una classe principale contenuta nel file JAR stesso.

Ecco come creeremmo un JAR non eseguibile senza un file manifest:

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

3. Argomenti della riga di comando Java

Proprio come qualsiasi applicazione, un'applicazione JAR accetta un numero qualsiasi di argomenti, inclusi zero argomenti. Tutto dipende dalle necessità dell'applicazione.

Ciò consente all'utente di specificare le informazioni di configurazione quando viene avviata l'applicazione .

Di conseguenza, l'applicazione può evitare valori hardcoded e può ancora gestire molti casi d'uso diversi.

Un argomento può contenere qualsiasi carattere alfanumerico, caratteri Unicode e possibilmente alcuni caratteri speciali consentiti dalla shell, ad esempio "@".

Gli argomenti sono separati da uno o più spazi . Se un argomento deve contenere spazi, gli spazi devono essere racchiusi tra virgolette. Sia le virgolette singole che le virgolette doppie funzionano bene.

Di solito, per una tipica applicazione Java, quando si richiama l'applicazione, l'utente immette gli argomenti della riga di comando dopo il nome della classe.

Tuttavia, non è sempre il caso delle applicazioni JAR.

Come abbiamo già discusso, il punto di ingresso di una classe principale Java è il metodo principale. Gli argomenti sono tutte String s e vengono passati al metodo principale come stringa matrice.

Detto questo, all'interno dell'applicazione, possiamo convertire qualsiasi elemento dell'array String in altri tipi di dati, come char , int , double , le loro classi wrapper o altri tipi appropriati.

4. Eseguire un JAR eseguibile con argomenti

Vediamo la sintassi di base per eseguire un file JAR eseguibile con argomenti:

java -jar jar-nome-file [args ...]

Il JAR eseguibile creato in precedenza è una semplice applicazione che stampa solo gli argomenti passati. Possiamo eseguirlo con un numero qualsiasi di argomenti. Di seguito è riportato un esempio con due argomenti:

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

Vedremo il seguente output nella console:

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

Quindi, quando si richiama un JAR eseguibile, non è necessario specificare il nome della classe principale sulla riga di comando . Aggiungiamo semplicemente i nostri argomenti dopo il nome del file JAR. Se forniamo un nome di classe dopo il nome del file JAR eseguibile, diventa semplicemente il primo argomento della classe principale effettiva.

La maggior parte delle volte, un'applicazione JAR è un JAR eseguibile. Un JAR eseguibile può avere al massimo una classe principale definita nel file manifest.

Di conseguenza, altre applicazioni nello stesso file JAR eseguibile non possono essere impostate nel file manifest, ma possiamo comunque eseguirle dalla riga di comando proprio come faremmo per un JAR non eseguibile. Vedremo esattamente come nella prossima sezione.

5. Eseguire un JAR non eseguibile con argomenti

Per eseguire un'applicazione in un file JAR non eseguibile, dobbiamo usare l' opzione -cp invece di -jar . Useremo l' opzione -cp (abbreviazione di classpath) per specificare il file JAR che contiene il file di classe che vogliamo eseguire:

java -cp nome-file-jar nome-classe-principale [args ...]

Come puoi vedere, in questo caso, dovremo includere il nome della classe principale nella riga di comando, seguito da argomenti .

Il JAR non eseguibile creato in precedenza contiene la stessa semplice applicazione. Possiamo eseguirlo con qualsiasi argomento (incluso zero). Ecco un esempio con due argomenti:

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

E, proprio come abbiamo visto sopra, vedremo il seguente output:

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

6. Conclusione

In questo tutorial, abbiamo imparato due modi per eseguire un'applicazione JAR sulla riga di comando con o senza argomenti.

Abbiamo anche dimostrato che un argomento può contenere spazi e caratteri speciali (quando consentito dalla shell).

Come sempre, il codice per gli esempi è disponibile su GitHub.