Manifest

A Wikipédiából, a szabad enciklopédiából

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és | forrásszöveg szerkesztése]

Jar fájl létrehozásakor automatikusan generálódik egy alapértelmezett manifest fájl. Egy arhí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és | forrásszöveg szerkesztése]

A 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 arhívá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 arhí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és | forrásszöveg szerkesztése]

Fordítás[szerkesztés | forrásszöveg szerkesztése]

Ez 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.