Hva er JAR-filformatet?
Filer med filendelsen .jar er ZIP-arkiver som brukes av Java-plattformen for å samle kompilerte .class-filer, metadata og ressurser - som bilder, tekstfiler og konfigurasjonsdata - i én enkelt bærbar pakke. Formatet ble introdusert med JDK 1.1 og er fortsatt den primære distribusjonsenheten for Java-biblioteker og applikasjoner.
En .jar-fil kan fungere som en frittstående kjørbar fil når dens META-INF/MANIFEST.MF-fil spesifiserer en Main-Class-oppføring. Når den startes med java -jar file.jar, leser JVM denne attributten og starter den angitte klassen, noe som lar utviklere levere en komplett applikasjon som en enkelt fil som kjører på alle systemer med et kompatibelt kjøremiljø installert. Hver enkelt oppføring i arkivet kan også komprimeres uavhengig ved hjelp av DEFLATE-algoritmen, noe som reduserer pakkestørrelsen samtidig som det tillater rask tilgang til enkeltfiler.
Blant metadataene en .jar bærer med seg, er META-INF/MANIFEST.MF-filen den viktigste: den definerer hvordan pakken brukes, lister opp avhengigheter via Class-Path, og kan inneholde sikkerhetsattributter. Digitale signaturer lagres som separate .SF- og .DSA/.RSA-filer i META-INF/, ikke i selve manifestet. Java 9 introduserte to ytterligere funksjoner: «Multi-Release JARs» plasserer versjonsspesifikke klasseoverskrivinger under META-INF/versions/N/, og modulære JAR-filer inkluderer en module-info.class i arkivets rot.
For å bla gjennom eller pakke ut innholdet i en .jar-fil, kan du bruke et hvilket som helst standard ZIP-verktøy og utføre de samme handlingene som med et vanlig arkiv - å endre navn til .zip fungerer like bra. Du kan også bruke jar-kommandoen som følger med JDK:
- List opp innhold:
jar -tf file.jar - Pakk ut:
jar -xf file.jar - Kjør (hvis kjørbar):
java -jar file.jar
Relaterte arkivformater for serversiden inkluderer .war-filer for webapplikasjoner og .ear-filer for bedriftsapplikasjoner, begge bygget på den samme ZIP-baserte strukturen.
Sikkerhet og trygghet
RISIKO: MEDIUMEn kjørbar JAR er et ekte program: med Java installert vil «java -jar» utføre koden den inneholder med din brukers rettigheter - derfor kan en ukjent JAR inneholde skadevare (Java RAT-er og trojanere er en kjent familie). Behandle en nedlastet JAR som en hvilken som helst .exe: kjør bare de fra kilder du stoler på, og vær forsiktig med uventede .jar-vedlegg. Å bare inspisere den som en ZIP (7-Zip) er trygt; risikoen ligger i å kjøre den. En JAR kan være kodesignert, men en signatur beviser bare opprinnelse, ikke sikkerhet.
Formatdetaljer
i et nøtteskallProgrammer som åpner JAR-filer
Tekniske detaljer
dyp spesifikasjon| Beholderformat | ZIP-arkiv - deler «PK» (`50 4B 03 04`) magic bytes ved offset 0 med alle standard ZIP-filer |
| MIME-type | `application/java-archive` |
| Påkrevd intern fil | `META-INF/MANIFEST.MF` - må være til stede; kontrollerer metadata, classpath og kjørbar oppførsel |
| Utløser for kjørbar JAR | `Main-Class`-attributt i `MANIFEST.MF`; startes med `java -jar file.jar` |
| Bytekode-format | Kompilerte `.class`-filer som inneholder JVM-bytekode - plattformuavhengig, ikke maskinkode |
| Komprimering per oppføring | DEFLATE-algoritme (samme som ZIP); enkeltfiler kan også lagres ukomprimert for raskere tilgang |
| Digitale signaturer | `.SF`-signaturfil parret med en `.DSA`- eller `.RSA`-nøkkelfil, begge lagret i `META-INF/` |
| Deklarasjon av classpath | `Class-Path`-attributt i manifestet lister opp avhengige JAR-filer separert med mellomrom |
| Multi-Release JAR (MR-JAR) | Java 9+; versjonsspesifikke klasseoverskrivinger plassert under `META-INF/versions/N/` slik at nyere JVM-er velger riktig bytekode |
| Modulbeskrivelse (JPMS) | En modulær JAR inkluderer `module-info.class` i arkivets rot, noe som aktiverer modulsystemet i Java 9+ |
| Pakkeforsegling | `Sealed: true` i manifestet forhindrer andre JAR-filer fra å injisere klasser i samme pakke under kjøring |
| Uber/Fat JAR | Selvstendig distribusjonsvariant som bygger inn alle avhengige JAR-filer; krever en tilpasset klasselaster som Spring Boot Loader |
| Utgitt | 1996-1997 (JDK 1.1) |
| Åpen standard | Ja · royalty-fri |
| Spesifikasjon | docs.oracle.com |
JAR-konverteringer
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om JAR-filer.