Monien vuosien ajan Phil Katzin arkistointi, zip, on ollut yksi suosituimmista tiedostojen arkistointimuodoista. Sun on ottanut zip-muodon Java-arkiston (JAR) perustaksi. Sun on laajentanut zip-muodon käyttöä useilla tavoilla, jotta voit pakata Java-luokat arkistotiedostoon. JAR: n lisääminen selvä Java-ajonaikainen tiedosto voi helposti etsiä ja suorittaa jar-tiedostossa olevan Java-sovelluksen pääluokan.
Jonkin verran postinumero
apuohjelmat voivat luoda itsepurkautuva arkistot useille alustoille, kuten MS Windows. Apuohjelma yhdistää tavallisen zip-arkiston purkajaohjelmaan uuden suoritettavan tiedoston (exe) luomiseksi. Exe-tiedoston vastaanottimien on vain suoritettava se purkamaan alkuperäisen zip-arkiston sisältö. Suoritettava tiedosto ajaa poimintaohjelman purkamaan arkistoidut tiedostot käyttäjän määrittelemään lähtöhakemistoon.
Voit muuntaa perus- zip- tai jar-tiedoston suoritettavaksi jar-tiedostoksi millä tahansa Java-alustalla. Vaikka itse purkautuva zip-tiedosto voi luoda vain alustakohtaisia suoritettavia tiedostoja, itse purkautuva purkitiedosto voidaan jakaa ja käyttää missä tahansa Java-alustaa tukevassa alustassa.
Itsepurkautuvan purkitiedoston luominen on yksinkertaista. Tarvitset vain erityisen JAR-manifestitiedoston, Java-pohjaisen purkuohjelman, zip- tai jar-tiedoston, joka sisältää perussisältötiedostot, ja kaikki Java SDK: t purkki
apuohjelma.
Luettelotiedosto
Suoritettavien JAR-tiedostojen tekeminen edellyttää ensin luettelotiedostoa nimeltä MANIFEST.MF
että META-INF
hakemistoon. Luettelotiedosto voi sisältää useita mahdollisia merkintöjä; Tässä tarkoituksessa meidän on kuitenkin määritettävä Java-luokan nimi, joka sisältää Java-pohjaisten purkuohjelmien main ()
menetelmä:
Pääluokka: ZipSelfExtractor
Olemme lisänneet luettelotiedoston nimeltä jarmanifesti
tämän vihjeen esimerkkikoodiin. Lisätietoja luettelotiedostosta on Jar-tiedostomäärityksessä.
Uuttolaite
Voit tehdä poisto-ohjelman käyttämällä erilaisia lähestymistapoja. Esittelemämme lähestymistapa on yksinkertainen ja suoraviivainen. Ensin purkuohjelma selvittää itsepurkautuvan purkitiedoston nimen. Kun tämä nimi on kädessä, purkija käyttää tavallisia, sisäänrakennettuja Java zip / jar -kirjastoja sisällön purkamiseen arkistosta. Löydät koko lähdekoodin ZipSelfExtractor
sisään ZipSelfExtractor.java
.
Jar-tiedostonimen hankkiminen purkuohjelmassa voi olla hankalaa. Vaikka purkitiedoston nimi näkyy komentorivillä, nimeä ei välitetä luokan nimille main ()
menetelmä. Siksi poimintaohjelmassa käytämme seuraavaa koodia tietojen purkamiseen purkimeen osoittavasta URL-osoitteesta:
yksityinen merkkijono getJarFileName () {myClassName = this.getClass (). getName () + ".class"; URL urlJar = this.getClass (). GetClassLoader (). GetSystemResource (myClassName); Merkkijono urlStr = urlJar.toString (); int from = "purkki: tiedosto:". pituus (); int = urlStr.indexOf ("! /"); return urlStr.substring (from, to); }
Huomaa, että getSystemResource ()
Menetelmän ohitamme myClassName
sijasta ZipSelfExtractor.class
. Sen avulla voimme muuttaa purkuohjelman nimeä muuttamatta koodin osaa. Asetamme myClassName
etsimällä nykyisen luokan nimi.
Seuraavaksi puretaan purkitiedoston nimi. Ensin pyydämme URL-osoitetta luokkatiedostolle, joka sisältää parhaillaan käynnissä olevan luokan (joka on purkuohjelma). Kun meillä on URL, voimme leikata purkitiedoston nimen. Määritelmän mukaan JAR-purkuohjelman URL-osoite noudattaa perusmuotoa:
purkki:
, mikä osoittaa, että suoritettava tiedosto toimii jar-tiedoston sisältä- Purkkitiedoston URL-osoite, kuten
tiedosto: / C: /temp/test.jar
, jota seuraa!
merkki - JAR: n tiedoston sisäisen polun nimi, kuten
/ZipSelfExtractor.class
Puraohjelman tapauksessa URL-osoite voi näyttää tältä:
purkki: tiedosto: /home/johnm/test/zipper.jar! /ZipSelfExtractor.class
Nyt kun meillä on purkitiedoston nimi, voimme suorittaa purkamisen. Puraohjelman sisäosat tukeutuvat sisäänrakennettuihin Java-zip / jar-tiedostojen manipulointikirjastoihin purkamaan arkiston sisältötiedostot. Katso lisätietoja resursseista zip / jar-tiedostojen manipulointikirjastoista.
Helppokäyttöisyyden vuoksi liesituuletin on graafinen Java-sovellus. Sovellus käyttää JFileChooser
luokka antaa käyttäjien määrittää kohdehakemiston, johon he haluavat tiedostot puretaan. A ProgressMonitor
näyttää uuttoprosessin edistymisen. Jos tiedosto saattaa korvata jo olemassa olevan tiedoston, käyttäjältä kysytään, korvaako olemassa oleva tiedosto vai ei. Lopuksi vakio-valintaikkuna esittelee purkutilastot.
Lopuksi purkuohjelma tarkistaa, ettei se pura tiedostoja, jotka tekevät purkitiedoston itsepurkautuvaksi - luettelotiedoston ja purkimen .luokka
tiedosto; ohjelman pitäisi vain purkaa alkuperäinen JAR-sisältö. Nämä kaksi tiedostoa ovat itsepurkautuvan purkitiedoston artefakteja eivätkä ole osa alkuperäisiä, perussisältötiedostoja.
Pakataan purkitiedosto
Nyt kun meillä on luettelotiedosto ja purkuohjelma, voimme rakentaa itsepurkautuvan purkitiedoston. Voimme käyttää manuaalisesti JDK: ita purkki
apuohjelma itsepurkautuvan purkitiedoston tekemiseen. Oletetaan esimerkiksi, että sinulla on zip-tiedosto nimeltä myzip.zip
, voit tehdä itsestään purkautuvan tiedoston suorittamalla seuraavat vaiheet:
CD
hakemistoon, joka sisältäämyzip.zip
- ladata
vetoketju. jar
- Pura tiedostot nykyiseen hakemistoon. Olemme tehneet siitä itsepurkautuvan JAR: n:
java -jar vetoketju. jar
- Kopioi
vetoketju. luokka
tiedosto tiedostoonZipSelfExtractor.class
- Nimeä uudelleen
myzip.zip
kutenmyzip.jar
- Päivittää
myzip.jar
kanssajarmanifesti
jaZipSelfExtractor.class
tiedostot:jar uvfm myzip.jar jarmanifest ZipSelfExtractor.class
Nyt myzip.jar
on itsepurkautuva kaikilla alustoilla, jotka sisältävät Java Runtime Environment (JRE) 1.2: n tai uudemman. Suorita itsepurkautuva jar-tiedosto suorittamalla:
java -jar myzip.jar
Huomaa, että joillakin käyttöympäristöillä voi olla jo määrätty sidoksia, jotta voit suorittaa jar-tiedoston vain napsauttamalla myzip.jar
tiedostokuvake, joka suorittaa komentorivivastaavuuden.
Harjoitus lukijalle
Nykyinen ZipSelfExtract
ei integroitu hyvin, jos teet itsepurkautuvan JAR-tiedoston olemassa olevasta jar-tiedostosta, joka sisältää luettelotiedoston. Lisää älykkyyttä itsepurkajaan ja luontiohjeisiin, jotta voit käsitellä olemassa olevia jar-tiedostoja, jotka sisältävät luettelotiedostoja.
Vapauta kätesi JAR: sta
Itsepurkautuva jar-tiedosto on hyvä mekanismi tiedostojen jakamiseen alustojen välillä. Itsepurkautuvat JAR-tiedostot on helppo luoda, ja JRE 1.2: n tai uudemman asennuksen vähimmäisvaatimus käyttäjille on kohtuullinen kompromissi alustojen välisen tuen saamiseksi.
Sen sijaan, että luot itsepurkautuvan purkitiedoston manuaalisesti, tutustu ZipAnywhere-sivustoon. ZipAnywhere on monipuolinen postinumero
/purkki
apuohjelma työkalu kirjoitettu 100% puhtaalla Java. Se on ilmainen GUI-pohjainen työkalu a la WinZip ja voi luoda itsepurkautuvia purkitiedostoja napin painalluksella.
Lisätietoja tästä aiheesta
- Lataa tämän vihjeen lähdetiedostot
//www.javaworld.com/javaworld/javatips/javatip120/zipper.jar
- "Java Tip 49How Java Resources from JAR and Zip Archives", John D.Mitchell ja Arthur Choi (JavaWorld)
//www.javaworld.com/javaworld/javatips/jw-javatip49.html
- "Java Tip 70Luo esineitä Jar-tiedostoista!" John D.Mitchell (JavaWorld)
//www.javaworld.com/javaworld/javatips/jw-javatip70.html
- Jar-tiedostomääritys
//java.sun.com/j2se/1.3/docs/guide/jar/jar.html
- JAR-komentorivin opas
//java.sun.com/j2se/1.3/docs/tooldocs/win32/jar.html
- ZipAnywhere, GUI-pohjainen itsepurkautuva JAR-luomistyökalu
//www.geocities.com/zipanywhere
- Näytä kaikki edelliset Java-vinkkejä ja lähetä oma
//www.javaworld.com/javatips/jw-javatips.index.html
- Opettele Java alusta asti JavaWorld 's Java 101 sarake
//www.javaworld.com/javaworld/topicalindex/jw-ti-java101.html
- Java-asiantuntijat vastaavat vaikeimpiin Java-kysymyksiinsi JavaWorld 's Java-kysymykset ja vastaukset sarake
//www.javaworld.com/javaworld/javaqa/javaqa-index.html
- Selaa artikkeleita aiheen mukaan JavaWorld 's Ajankohtainen hakemisto
//www.javaworld.com/channel_content/jw-topical-index.shtml
- Puhu Java-foorumillamme
//forums.idg.net/webx?13@@.ee6b802
- Ilmottautua JavaWorld 'Ilmaiset viikoittaiset sähköpostiuutiskirjeet
//www.idg.net/jw-subscribe
- Löydät runsaasti tietotekniikkaan liittyviä artikkeleita sisarjulkaisuistamme .net
Tämän tarinan, "Java Tip 120: Execute self-extracting JARs", julkaisi alun perin JavaWorld.