Kør et Java-program fra kommandolinjen

1. Oversigt

Typisk inkluderer hver meningsfuld applikation en eller flere JAR-filer som afhængigheder. Der er dog tidspunkter, at en JAR-fil i sig selv repræsenterer en enkeltstående applikation eller en webapplikation.

Vi fokuserer på det enkeltstående applikationsscenarie i denne artikel. Herefter henviser vi til det som en JAR-applikation.

I denne vejledning lærer vi først, hvordan du opretter en JAR-applikation. Senere lærer vi, hvordan vi gør det køre et JAR-program med eller uden kommandolinjeargumenter.

2. Opret en KRUKKE Ansøgning

En JAR-fil kan indeholde en eller flere hovedklasser. Hver hovedklasse er indgangsstedet for en applikation. Så teoretisk set kan en JAR-fil indeholde mere end en applikation, men den skal indeholde mindst en hovedklasse for at kunne køre.

En JAR-fil kan have et indgangspunkt i sin manifestfil. I dette tilfælde er JAR-filen en eksekverbar JAR. Hovedklassen skal medtages i den JAR-fil.

Lad os først og fremmest se et hurtigt eksempel på, hvordan vi kompilerer vores klasser og opretter en eksekverbar JAR med en manifestfil:

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

En ikke-eksekverbar JAR er simpelthen en JAR-fil, der ikke har en Hovedklasse defineret i manifestfilen. Som vi vil se senere, kan vi stadig køre en hovedklasse, der er indeholdt i selve JAR-filen.

Sådan opretter vi en ikke-eksekverbar JAR uden en manifestfil:

$ jar jf JarExample2.jar com / baeldung / jarArguments / *. klasse

3. Java-kommandolinjeargumenter

Ligesom enhver applikation accepterer en JAR-applikation et hvilket som helst antal argumenter inklusive nul argumenter. Det hele afhænger af applikationens behov.

Dette giver brugeren mulighed for at angiv konfigurationsoplysninger, når applikationen startes.

Som et resultat kan applikationen undgå hardkodede værdier, og den kan stadig håndtere mange forskellige brugssager.

Et argument kan indeholde hvilke som helst alfanumeriske tegn, unicode-tegn og muligvis nogle specialtegn, der er tilladt af skallen, for eksempel '@'.

Argumenter er adskilt af et eller flere mellemrum. Hvis et argument skal indeholde mellemrum, skal mellemrummet omsluttes mellem anførselstegn. Enten enkelte tilbud eller dobbelt tilbud fungerer fint.

Normalt, for en typisk Java-applikation, når brugeren påberåber sig applikationen, indtaster brugeren kommandolinjeargumenter efter klassens navn.

Det er dog ikke altid tilfældet for JAR-applikationer.

Som vi allerede har diskuteret, er indgangsstedet for en Java-hovedklasse den vigtigste metode. Det argumenter er alle Snors og overføres til hovedmetoden som en Snor array.

Når det er sagt, inden i applikationen kan vi konvertere ethvert element i Snor array til andre datatyper, f.eks char, int, dobbelt, deres indpakningsklasser, eller andre passende typer.

4. Kør en eksekverbar KRUKKE med argumenter

Lad os se den grundlæggende syntaks til kørsel af en eksekverbar JAR-fil med argumenter:

java -jar jar-filnavn [args ...]

Den eksekverbare JAR oprettet tidligere er et simpelt program, der bare udskriver de argumenter, der er sendt ind. Vi kan køre det med et hvilket som helst antal argumenter. Nedenfor er et eksempel med to argumenter:

$ java -jar JarExample.jar "arg 1" [e-mail-beskyttet] 

Vi ser følgende output i konsollen:

Hej Baeldung Reader i JarExample! Der er 2 argument (er)! Argument (1): arg 1 Argument (2): [email protected] 

Så, når vi påkalder en eksekverbar JAR, behøver vi ikke angive hovedklassenavnet på kommandolinjen. Vi tilføjer blot vores argumenter efter JAR-filnavnet. Hvis vi giver et klassenavn efter det eksekverbare JAR-filnavn, bliver det simpelthen det første argument til den aktuelle hovedklasse.

De fleste gange er en JAR-applikation en eksekverbar JAR. En eksekverbar JAR kan maksimalt have defineret en hovedklasse i manifestfilen.

Derfor kan andre applikationer i den samme eksekverbare JAR-fil ikke indstilles i manifestfilen, men vi kan stadig køre dem fra kommandolinjen, ligesom vi ville have gjort for en ikke-eksekverbar JAR. Vi vil se nøjagtigt hvordan i det næste afsnit.

5. Kør en ikke-eksekverbar KRUKKE med argumenter

For at køre et program i en ikke-eksekverbar JAR-fil skal vi bruge -cp mulighed i stedet for -krukke. Vi bruger -cp option (forkortelse for classpath) for at angive den JAR-fil, der indeholder den klassefil, vi vil udføre:

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

Som du kan se, i dette tilfælde skal vi medtage hovedklassenavnet i kommandolinjen efterfulgt af argumenter.

Den ikke-eksekverbare JAR, der blev oprettet tidligere, indeholder den samme enkle applikation. Vi kan køre det med alle (inklusive nul) argumenter. Her er et eksempel med to argumenter:

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

Og ligesom vi så ovenfor, ser vi følgende output:

Hej Baeldung Reader i JarExample! Der er 2 argument (er)! Argument (1): arg 1 Argument (2): [email protected]

6. Konklusion

I denne vejledning lærte vi to måder at køre en JAR-applikation på kommandolinjen med eller uden argumenter.

Vi demonstrerede også, at et argument kunne indeholde mellemrum og specialtegn (når skallen tillader det).

Som altid er koden til eksemplerne tilgængelig på GitHub.