Po mnoho rokov je tvorba archívu Phila Katza, zip, jedným z najpopulárnejších formátov na archiváciu súborov. Spoločnosť Sun prijala formát zip ako základ pre Java Archive (JAR). Spoločnosť Sun rozšírila použitie formátu zip s rôznymi konvenciami, aby ste mohli triedy Java zbaliť do archívneho súboru. S dodatkom JAR prejav súboru, môže runtime Java ľahko nájsť a priamo spustiť hlavnú triedu aplikácie Java obsiahnutú v súbore jar.
Niektoré PSČ
môžu vytvárať obslužné nástroje samorozbaľovací archívy pre rôzne platformy, napríklad MS Windows. Obslužný nástroj kombinuje bežný archív zip s extraktorovým programom a generuje nový spustiteľný súbor (exe). Príjemcovia súboru exe ho musia iba spustiť, aby extrahovali obsah pôvodného archívu zip. Spustiteľný súbor spustí program na extrakciu, pomocou ktorého extrahuje archivované súbory do používateľom zadaného výstupného adresára.
Môžete previesť základný súbor zip alebo jar do spustiteľného súboru jar na ľubovoľnej platforme Java. Zatiaľ čo samorozbaľovací zip dokáže vytvoriť iba spustiteľné súbory špecifické pre platformu, samorozbaľovací súbor jar je možné distribuovať a spustiť na ľubovoľnej platforme podporujúcej Javu.
Vytvorenie samorozbaľovacieho súboru jar je jednoduché. Potrebujete iba špeciálny súbor manifestu JAR, extrakčný program založený na prostredí Java, súbor zip alebo jar obsahujúci súbory základného obsahu a všetky súpravy Java SDK. jar
úžitková aplikácia.
Súbor manifestu
Ak chcete vytvoriť spustiteľné súbory JAR, potrebujete najskôr súbor manifestu s názvom MANIFEST.MF
v META-INF
adresár. Súbor manifestu môže obsahovať niekoľko možných záznamov; pre naše účely tu však stačí zadať názov triedy Java, ktorá obsahuje extraktorový program založený na Jave hlavný()
metóda:
Hlavná trieda: ZipSelfExtractor
Pridali sme súbor manifestu s názvom jarmanifest
podľa príkladu kódu tohto tipu. Ďalšie informácie o súbore manifestu nájdete v špecifikácii súboru Jar.
Extraktor
Program na extrakciu môžete vytvoriť pomocou rôznych prístupov. Prístup, ktorý tu predstavujeme, je jednoduchý a priamy. Najskôr extrakčný program zistí názov samorozbaľovacieho súboru jar. S týmto menom v ruke extraktor využíva štandardné vstavané knižnice Java zip / jar na extrahovanie súborov obsahu z archívu. Celý zdrojový kód pre server ZipSelfExtractor
v ZipSelfExtractor.java
.
Získanie názvu súboru jar v extraktorovom programe môže byť zložité. Aj keď sa názov príkazového riadku zobrazuje na príkazovom riadku, tento názov sa neprenesie do triedy hlavný()
metóda. Preto v extraktorovom programe používame na extrahovanie informácií z adresy URL, ktorá smeruje na extraktor, nasledujúci kód:
private String getJarFileName () {myClassName = this.getClass (). getName () + ".class"; URL urlJar = this.getClass (). GetClassLoader (). GetSystemResource (myClassName); Reťazec urlStr = urlJar.toString (); int from = "jar: file:". length (); int to = urlStr.indexOf ("! /"); vrátiť urlStr.substring (z, do); }
Všimnite si, že v getSystemResource ()
metóda, ktorú minieme myClassName
namiesto ZipSelfExtractor.class
. Umožní nám to zmeniť názov programu extraktora bez zmeny tej časti kódu. Nastavili sme myClassName
vyhľadaním názvu aktuálnej triedy.
Ďalej extrahujeme názov súboru jar. Najskôr požiadame o adresu URL súboru triedy obsahujúceho momentálne spustenú triedu (čo je program na extrakciu). Keď máme adresu URL, môžeme vyrezať názov súboru jar. Podľa definície má URL extraktorového programu JAR základný formát:
nádoba:
, čo ukazuje, že spustiteľný súbor beží zvnútra súboru jar- URL súboru jar, ako napr
súbor: / C: /temp/test.jar
, za ktorým nasleduje!
znak - Názov internej cesty k súboru v rámci súboru JAR, napríklad
/ZipSelfExtractor.class
V prípade extraktorového programu môže adresa URL vyzerať takto:
jar: file: /home/johnm/test/zipper.jar! /ZipSelfExtractor.class
Teraz, keď máme názov súboru jar, môžeme vykonať extrakciu. Vnútornosti extrakčného programu sa spoliehajú na zabudované knižnice na manipuláciu so súbormi Java zip / jar, ktoré slúžia na dekomprimáciu súborov s obsahom obsiahnutých v archíve. Viac informácií o knižniciach na manipuláciu so súbormi zip / jar nájdete v zdrojoch.
Pre jednoduchšie použitie je extraktor grafická aplikácia Java. Aplikácia používa JFileChooser
triedy, aby používatelia mohli určiť cieľový adresár, do ktorého chcú súbory extrahovať. A ProgressMonitor
ukazuje postup extrakčného procesu. Ak by súbor mohol prepísať už existujúci súbor, používateľ sa spýta, či má alebo nemá prepísať existujúci súbor. Na záver štandardné dialógové okno predstavuje štatistiku extrakcie.
Nakoniec program na extrakciu skontroluje, či neextrahuje súbory, vďaka ktorým je súbor jar samorozbaľovací - súbor manifestu a súbor extraktora. .trieda
pilník; program by mal iba extrahovať pôvodný obsah JAR. Tieto dva súbory sú artefakty samorozbaľovacieho súboru jar a nie sú súčasťou pôvodných súborov základného obsahu.
Balí sa nádoba
Teraz, keď máme súbor manifestu a program na extrakciu, môžeme vytvoriť samorozbaľovací súbor jar. Môžeme manuálne použiť JDK jar
pomôcka na vytvorenie samorozbaľovacieho súboru jar. Napríklad za predpokladu, že máte súbor zip s názvom myzip.zip
, môžete z nich vytvoriť samorozbaľovací súbor:
cd
do adresára obsahujúcehomyzip.zip
- Stiahnuť ▼
zipper.jar
- Extrahujte súbory do aktuálneho adresára. Urobili sme z neho samorozbaľovací JAR:
java -jar zipper.jar
- Skopírujte
zips.trieda
podať doZipSelfExtractor.class
- Premenovať
myzip.zip
akomyzip.jar
- Aktualizácia
myzip.jar
sjarmanifest
aZipSelfExtractor.class
súbory:jar uvfm myzip.jar jarmanifest ZipSelfExtractor.class
Teraz myzip.jar
je samorozbaľovací na všetkých platformách obsahujúcich prostredie Java Runtime Environment (JRE) 1.2 alebo novšie. Ak chcete spustiť samorozbaľovací súbor jar, spustite:
java -jar myzip.jar
Upozorňujeme, že niektoré platformy môžu mať už nastavené väzby, takže súbor jar môžete spustiť kliknutím na ikonu myzip.jar
ikona súboru, ktorá spustí ekvivalent príkazového riadku.
Cvičenie pre čitateľa
Súčasný ZipSelfExtract
sa zle integruje, ak vytvoríte samorozbaľovací súbor JAR z existujúceho súboru jar obsahujúceho súbor manifestu. Pridajte inteligenciu do extraaktora a pokynov na vytvorenie, aby ste mohli pracovať s existujúcimi súbormi jar, ktoré obsahujú súbory manifestu.
Osloboďte ruku od JAR
Samorozbaľovací súbor jar je dobrým mechanizmom na distribúciu súborov medzi platformami. Samorozbaľovacie súbory JAR sa vytvárajú ľahko a minimálna požiadavka používateľa na inštaláciu JRE 1.2 alebo novšiu je rozumným kompromisom pre získanie podpory pre rôzne platformy.
Namiesto manuálneho vytvárania samorozbaľovacieho súboru jar si pozrite ZipAnywhere. ZipAnywhere je plne funkčný PSČ
/jar
obslužný nástroj napísaný v 100% čistej Jave. Je to bezplatný nástroj založený na grafickom používateľskom rozhraní a a WinZip. Môže vytvárať samorozbaľovacie súbory jar kliknutím na tlačidlo.
Získajte viac informácií o tejto téme
- Stiahnite si zdrojové súbory pre tento tip
//www.javaworld.com/javaworld/javatips/javatip120/zipper.jar
- „Tip Java 49 Ako extrahovať zdroje Java z archívov JAR a Zip,“ John D. Mitchell a Arthur Choi (JavaWorld)
//www.javaworld.com/javaworld/javatips/jw-javatip49.html
- „Java Tip 70Vytváranie objektov zo súborov Jar!“ John D. Mitchell (JavaWorld)
//www.javaworld.com/javaworld/javatips/jw-javatip70.html
- Špecifikácia súboru Jar
//java.sun.com/j2se/1.3/docs/guide/jar/jar.html
- Sprievodca príkazovým riadkom JAR
//java.sun.com/j2se/1.3/docs/tooldocs/win32/jar.html
- ZipAnywhere, samorozbaľovací nástroj na vytváranie JAR založený na GUI
//www.geocities.com/zipanywhere
- Zobraziť všetky predchádzajúce Tipy pre Java a odovzdať svoje vlastné
//www.javaworld.com/javatips/jw-javatips.index.html
- Naučte sa Java od základu v JavaWorld 's Java 101 stĺpec
//www.javaworld.com/javaworld/topicalindex/jw-ti-java101.html
- Odborníci na jazyk Java odpovedajú na vaše najťažšie otázky týkajúce sa jazyka Java v jazyku JavaWorld 's Java Q&A stĺpec
//www.javaworld.com/javaworld/javaqa/javaqa-index.html
- Prechádzajte články podľa tém v JavaWorld 's Aktuálny index
//www.javaworld.com/channel_content/jw-topical-index.shtml
- Vystúpte v našom fóre Java
//forums.idg.net/webx?13@@.ee6b802
- Zaregistrovať JavaWorld 's bezplatné týždenné e-mailové informačné vestníky
//www.idg.net/jw-subscribe
- Množstvo článkov týkajúcich sa IT z našich sesterských publikácií nájdete na .net
Tento príbeh, „Java Tip 120: Execute self-extracting JARs“, bol pôvodne publikovaný spoločnosťou JavaWorld.