Manifest
A manifest fájl egy speciális fájl, amelyet a JAR fájl-ba csomagolnak. Csomagokkal és kiterjesztésekkel kapcsolatos adatok tárolására használják. A manifest fájl metaadatokat tartalmaz név-érték párok formájában, melyek szakaszokba szerveződnek. Ha a JAR fájl futtatható kell, hogy legyen, akkor a manifestben adható meg az alkalmazás fő (main) osztálya, ahonnan a futtatás indul. A manifest fáj neve fix módon MANIFEST.MF.
Manifest specifikációk
szerkesztésJar fájl létrehozásakor automatikusan generálódik egy alapértelmezett manifest fájl. Egy archívumban csak egy manifest fájl lehet, amelynek a META-INF könyvtárban kell lennie.
A JDK 1.2 verzióval létrehozott JAR fájlok esetében az alapértelmezett manifest nagyon egyszerű. Csupán ennyiből áll:
Manifest-Version: 1.0
Minden bejegyzés egy név-érték pár. A nevet és az értéket kettősponttal választják el egymástól. A Manifest-Version paraméter azt mondja meg, hogy a fájl a manifest specifikáció melyik verziójának felel meg. A manifest fájl tartalma a JAR tervezett felhasználásától függ. Az alapértelmezett manifest semmilyen feltételezéssel nem él a JAR felhasználását illetően, ezért csak saját magáról tartalmaz információt.
Speciális célú manifest headerök
szerkesztésA JAR tervezett felhasználásától függően el lehet térni az alapértelmezett manifesttől. Ha a JAR fájlba csomagolás egyetlen célja az archiválás, akkor nincs különösebb jelentősége a MANIFEST.MF fájlnak. A legtöbb esetben a JAR célja azonban túlmegy az archiváláson és a tömörítésen. Az alábbiakban a speciális célú JAR fájlok headerjeinek leírása következik:
JAR fájlba csomagolt alkalmazás:
Ha a JAR egy alkalmazást tartalmaz, akkor a JVM-nek valahonnan meg kell tudnia az alkalmazás belépési pontját. A belépési pont tetszőleges olyan osztály lehet, amely tartalmaz static void main(String[] args)
metódust. Egy ilyen osztály neve adható meg a Main-Class headerben:
Main-Class: osztálynév
Az osztálynév paraméterben adható meg az osztály neve az őt tartalmazó csomag nevével együtt.
Letöltendő kiterjesztések: Letöltendő kiterjesztések (angolul: Download Extensions) olyan JAR fájlok, amelyekre egy JAR fájl manifestje hivatkozik. Jellemzően a Java appleteket is JAR fájlba csomagolják, amelyeknek a manifestje hivatkozik egy vagy több további JAR fájlra, amelyek szükségesek az applet működéséhez. A kiterjesztések manifestjei hivatkozhatnak további kiterjesztésekre is. A kiterjesztéseket a Class-Path header tartalmazza például a következőképpen:
Class-Path: servlet.jar infobus.jar acme/beans.jar
Ebben a példában a servlet.jar, az infobus.jar, és az acme/beans.jar archívumok osztályai válnak láthatóvá a hivatkozó JAR számára. A Class-Path elérési útvonalai relatívan értendőek az adott applet vagy alkalmazás JAR fájljának URL-jéhez képest.
Csomag lezárása: A JAR fájlon belüli csomagok opcionálisan lezárhatóak, ami annyit jelent, hogy az adott csomagban definiált osztályok mindegyikét egyazon JAR fájlba kell csomagolni. Csomagok lezárását verziókonzisztencia és biztonsági okokból szokták alkalmazni:
Egy csomag lezárásához először a Name headert kell alkalmazni, majd a Sealed headert, valahogy így:
Name: krumpligyar/szeretetcsomag/ Sealed: true
Ahol a Name header értéke a csomag relatív elérési útvonala a fájlstruktúrában. Vegyük észre, hogy a könyvtárnév '/' karakterrel záródik, ami megkülönbözteti azt egy reguláris fájl nevétől. Minden olyan header, ami a Name header után következik köztes üres sor nélkül, az vonatkozni fog a Name headerben megadott fájlra illetve csomagra. A fenti példában a Sealed header köztes üres sor nélkül követi a Name headert, ezért a Sealed header vonatkozik a krumpligyar/szeretetcsomag/
csomagra.
Csomagverzió: A csomagverzió specifikáció (angolul: Package Versioning Specification) számos headert definiál a verziókezelési információk tárolására. Minden csomaghoz rendelhetőek ilyen headerök. A verzióra vonatkozó header soroknak a Name header után kell következniük. Az alábbi példa bemutatja az összes lehetséges verziós headert:
Name: java/util/ Specification-Title: "Java Utility Classes"
Specification-Version: "1.2"
Specification-Vendor: "Sun Microsystems, Inc.".
Implementation-Title: "java.util"
Implementation-Version: "build57"
Implementation-Vendor: "Sun Microsystems, Inc."
Lásd még
szerkesztésFordítás
szerkesztésEz a szócikk részben vagy egészben a Manifest file című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.