Vejledning til oprettelse og kørsel af en Jar-fil i Java

1. Oversigt

Normalt er det praktisk at samle mange Java-klassefiler i en enkelt arkivfil.

I denne vejledning skal vi dække ind og ud af at arbejde med krukke - eller Java ARpurløg - filer i Java.

Specifikt tager vi en simpel applikation og udforsker forskellige måder at pakke og køre den som en krukke. Vi vil også besvare nogle nysgerrigheder som hvordan man let læser en jars manifestfil langs vejen.

2. Java-programopsætning

Før vi kan oprette en kørbar jar-fil, skal vores applikation have en klasse med en vigtigste metode. Denne klasse giver vores startpunkt i applikationen:

public static void main (String [] args) {System.out.println ("Hello Baeldung Reader!"); }

3. Jar kommando

Nu hvor vi alle er klar, lad os kompilere vores kode og oprette vores jar-fil.

Vi kan gøre dette med javac fra kommandolinjen:

javac com / baeldung / jar / *. java

Det javac kommando opretter JarExample.class i com / baeldung / jar vejviser. Vi kan nu pakke det ind i en jar-fil.

3.1. Brug af standardindstillingerne

For at oprette jar-filen skal vi bruge krukke kommando.

At bruge krukke kommando til at oprette en jar-fil, skal vi bruge c mulighed for at angive, at vi opretter en fil og f mulighed for at specificere filen:

jar cf JarExample.jar com / baeldung / jar / *. klasse

3.2. Indstilling af hovedklasse

Det er nyttigt for jar-filmanifestet at inkludere hovedklassen.

Manifestet er en speciel fil i en krukke, der ligger META-INF katalog og navngivet MANIFEST.MF. Manifestfilen indeholder specielle metaoplysninger om filer i jar-filen.

Nogle eksempler på, hvad vi kan bruge en manifestfil til, inkluderer indstilling af startpunktet, indstilling af versionoplysninger og konfiguration af klassestien.

Ved hjælp af e valgmulighed, kan vi specificere vores indgangspunkt, og krukke kommando vil føje det til den genererede manifestfil.

Lad os løbe krukke med et angivet indgangspunkt:

jar cfe JarExample.jar com.baeldung.jar.JarExample com / baeldung / jar / *. klasse

3.3. Opdatering af indholdet

Lad os sige, at vi har foretaget en ændring i en af ​​vores klasser og kompileret den igen. Nu skal vi opdatere vores jar-fil.

Lad os bruge krukke kommando med u mulighed for at opdatere dets indhold:

jar uf JarExample.jar com / baeldung / jar / JarExample.class

3.4. Indstilling af en manifest fil

I nogle tilfælde skal vi muligvis have mere kontrol over, hvad der findes i vores manifestfil. Det krukke kommando giver funktionalitet til at levere vores egne manifestoplysninger.

Lad os tilføje en delvis manifestfil med navnet eksempel_manifest.txt til vores ansøgning om at indstille vores startpunkt:

Hovedklasse: com.baeldung.jar.JarExample

De manifestoplysninger, vi giver, føjes til hvad jar-kommandoen genererer, så det er den eneste linje, vi har brug for i filen.

Det er vigtigt, at vi afslutter vores manifestfil med enny linje. Uden den nye linje ignoreres vores manifestfil lydløst.

Med denne opsætning, lad os oprette vores krukke igen ved hjælp af vores manifestoplysninger og m mulighed:

jar cfm JarExample.jar com / baeldung / jar / example_manifest.txt com / baeldung / jar / *. klasse

3.5. Omfattende output

Hvis vi ønsker mere information ud af krukke kommando, vi kan simpelthen tilføje v mulighed for detaljeret.

Lad os køre vores krukke kommando med v mulighed:

jar cvfm JarExample.jar com / baeldung / jar / example_manifest.txt com / baeldung / jar / *. klasse tilføjet manifest tilføjer: com / baeldung / jar / JarExample.class (in = 453) (out = 312) (deflateret 31% )

4. Brug af Maven

4.1. Standardkonfiguration

Vi kan også bruge Maven til at oprette vores krukke. Da Maven favoriserer konvention over konfiguration, kan vi bare køre pakke for at oprette vores jar-fil.

mvn-pakke

Som standard føjes vores jar-fil til mål mappe i vores projekt.

4.2. Angiver hovedklassen

Vi kan også konfigurere Maven til at specificere hovedklassen og oprette en eksekverbar jar-fil.

 org.apache.maven.plugins maven-jar-plugin $ {maven-jar-plugin.version} com.baeldung.jar.JarExample 

5. Brug af Spring Boot

5.1. Brug af Maven og standardindstillinger

Hvis vi bruger Spring Boot med Maven, skal vi først bekræfte, at vores emballageindstilling er indstillet til krukke hellere end krig i vores pom.xml fil.

4.0.0 spring-boot jar spring-boot

Når vi ved, at det er konfigureret, kan vi køre pakke mål:

mvn-pakke

5.2. Indstilling af indgangsstedet

At indstille vores hovedklasse er, hvor vi finder forskelle mellem at skabe en krukke med en almindelig Java-applikation og en fed krukke til en Spring Boot-applikation. I en Spring Boot-applikation er hovedklassen faktisk org.springframework.boot.loader.JarLauncher.

Selvom vores eksempel ikke er en Spring Boot-applikation, kan vi nemt indstille den til at være en Spring Boot-konsolapplikation.

Vores hovedklasse skal specificeres som startklassen:

 com.baeldung.jar.JarExample 

Vi kan også bruge Gradle til at oprette en Spring Boot fedtkrukke.

6. Kørsel af krukken

Nu hvor vi har vores jar-fil, kan vi køre den. Vi kører jar-filer ved hjælp af java kommando.

6.1. Udlede hovedklassen

Da vi er gået videre og sørget for, at vores hovedklasse er specificeret i manifestet, vi kan bruge -krukke mulighed for java kommando til at køre vores applikation uden at angive hovedklassen:

java -jar JarExample.jar

6.2. Specificering af hovedklassen

Vi kan også angive hovedklassen, når vi kører vores applikation. Vi kan bruge -cp mulighed for at sikre, at vores jar-fil er i klassestien og derefter give vores hovedklasse i package.className format:

java -cp JarExample.jar com.baeldung.jar.JarExample

Brug af stiadskillere i stedet for pakkeformat fungerer også:

java -cp JarExample.jar com / baeldung / jar / JarExample

6.3. Liste over indholdet af en krukke

Vi kan bruge krukke kommando til at liste indholdet af vores jar-fil:

jar tf JarExample.jar META-INF / META-INF / MANIFEST.MF com / baeldung / jar / JarExample.class

6.4. Visning af den manifeste fil

Da det kan være vigtigt at vide, hvad der er i vores MANIFEST.MF fil, lad os se på en hurtig og nem måde, vi kan kigge på indholdet uden at forlade kommandolinjen.

Lad os bruge pakke ud kommando med indstillingen -p:

unzip -p JarExample.jar META-INF / MANIFEST.MF Manifest-version: 1.0 Oprettet af: 1.8.0_31 (Oracle Corporation) Hovedklasse: com.baeldung.jar.JarExample

7. Konklusion

I denne vejledning opretter vi en simpel Java-applikation med en vigtigste klasse.

Så kiggede vi på tre måder at oprette jar-filer på: ved hjælp af krukke kommando med Maven og med en Maven Spring Boot-applikation.

Efter at vi havde oprettet vores jar-filer, vendte vi tilbage til kommandolinjen og kørte dem med en udledt og en specificeret hovedklasse.

Vi lærte også, hvordan man viser indholdet af en fil, og hvordan man viser indholdet af en enkelt fil i en krukke.

Både det almindelige Java-eksempel og Spring Boot-eksemplet er tilgængelige på GitHub.