1. Översikt
Vanligtvis innehåller varje meningsfull applikation en eller flera JAR-filer som beroenden. Det finns emellertid tillfällen att en JAR-fil i sig representerar en fristående applikation eller en webbapplikation.
Vi fokuserar på det fristående applikationsscenariot i den här artikeln. Därefter hänvisar vi till det som en JAR-ansökan.
I den här handledningen lär vi oss först hur man skapar en JAR-applikation. Senare lär vi oss hur man kör ett JAR-program med eller utan kommandoradsargument .
2. Skapa ett JAR- program
En JAR-fil kan innehålla en eller flera huvudklasser. Varje huvudklass är startpunkten för en ansökan . Så teoretiskt sett kan en JAR-fil innehålla mer än en applikation, men den måste innehålla minst en huvudklass för att kunna köras.
En JAR-fil kan ha en ingångsposition i manifestfilen . I det här fallet är JAR-filen en körbar JAR. Huvudklassen måste ingå i den JAR-filen.
Först och främst, låt oss se ett snabbt exempel på hur vi kompilerar våra klasser och skapar en körbar JAR med en manifestfil:
$ javac com/baeldung/jarArguments/*.java $ jar cfm JarExample.jar ../resources/example_manifest.txt com/baeldung/jarArguments/*.class
En icke-körbar JAR är helt enkelt en JAR-fil som inte har en huvudklass definierad i manifestfilen. Som vi kommer att se senare kan vi fortfarande köra en huvudklass som finns i själva JAR-filen.
Så här skapar vi en icke-körbar JAR utan en manifestfil:
$ jar cf JarExample2.jar com/baeldung/jarArguments/*.class
3. Java-kommandoradsargument
Precis som alla applikationer accepterar en JAR-applikation valfritt antal argument, inklusive nollargument. Allt beror på applikationens behov.
Detta gör det möjligt för användaren att ange konfigurationsinformation när applikationen startas .
Som ett resultat kan applikationen undvika hårdkodade värden och kan fortfarande hantera många olika användningsfall.
Ett argument kan innehålla alfanumeriska tecken, unicode-tecken och eventuellt specialtecken tillåtna av skalet, till exempel '@'.
Argument är åtskilda av ett eller flera mellanslag . Om ett argument måste innehålla mellanslag måste mellanslagen bifogas mellan citat. Antingen enkla citat eller dubbla citat fungerar bra.
Vanligtvis, för en typisk Java-applikation, när användaren anropar applikationen, anger användaren kommandoradsargument efter klassens namn.
Det är dock inte alltid fallet för JAR-applikationer.
Som vi redan har diskuterat är ingångspunkten för en Java-huvudklass huvudmetoden. De argument är alla String s och skickas till den huvudsakliga metoden som en sträng array.
Som sagt, inne i programmet kan vi konvertera alla element i String array till andra datatyper, till exempel röding , int , double , deras omslag klasser, eller andra lämpliga typer.
4. Kör en körbar JAR med argument
Låt oss se den grundläggande syntaxen för att köra en körbar JAR-fil med argument:
java -jar jar-file-name [args ...]
Den körbara JAR som skapades tidigare är en enkel applikation som bara skriver ut de argument som skickats in. Vi kan köra den med valfritt antal argument. Nedan följer ett exempel med två argument:
$ java -jar JarExample.jar "arg 1" [email protected]
Vi ser följande utdata i konsolen:
Hello Baeldung Reader in JarExample! There are 2 argument(s)! Argument(1):arg 1 Argument(2):[email protected]
Så när vi anropar en körbar JAR behöver vi inte ange huvudklassnamnet på kommandoraden . Vi lägger helt enkelt till våra argument efter JAR-filnamnet. Om vi ger ett klassnamn efter det körbara JAR-filnamnet blir det helt enkelt det första argumentet till den faktiska huvudklassen.
De flesta gånger är en JAR-applikation en körbar JAR. En körbar JAR kan ha maximalt en huvudklass definierad i manifestfilen.
Följaktligen kan andra applikationer i samma körbara JAR-fil inte ställas in i manifestfilen, men vi kan fortfarande köra dem från kommandoraden precis som för en icke-körbar JAR. Vi får se exakt hur i nästa avsnitt.
5. Kör en JAR som inte kan köras med argument
För att köra ett program i en icke-körbar JAR-fil måste vi använda alternativet -cp istället för -jar . Vi använder alternativet -cp (förkortning för classpath) för att ange JAR-filen som innehåller klassfilen vi vill köra:
java -cp jar-file-name main-class-name [args ...]
Som du kan se, i det här fallet måste vi inkludera huvudklassnamnet i kommandoraden, följt av argument .
Den icke-körbara JAR som skapats tidigare innehåller samma enkla applikation. Vi kan köra den med alla (inklusive noll) argument. Här är ett exempel med två argument:
$ java -cp JarExample2.jar com.baeldung.jarArguments.JarExample "arg 1" [email protected]
Och precis som vi såg ovan ser vi följande utdata:
Hello Baeldung Reader in JarExample! There are 2 argument(s)! Argument(1):arg 1 Argument(2):[email protected]
6. Sammanfattning
I den här handledningen lärde vi oss två sätt att köra ett JAR-program på kommandoraden med eller utan argument.
Vi visade också att ett argument kan innehålla mellanslag och specialtecken (när skalet tillåter det).
Som alltid finns koden för exemplen tillgänglig på GitHub.