Programiranje

Java Nasvet 120: Izvedite samorazširljive JAR-je

Ustvarjanje arhiva, zip, Phil Katza je že vrsto let ena izmed najbolj priljubljenih oblik arhiviranja datotek. Sun je za osnovo za Java Archive (JAR) sprejel format zip. Sun je razširil uporabo zip formata z različnimi konvencijami, tako da lahko razrede Java spakirate v arhivsko datoteko. Z dodatkom JAR manifest datoteko, lahko izvajalno okolje Java zlahka poišče in neposredno izvrši glavni razred aplikacije Java, ki je v datoteki jar.

Nekateri zadrgo pomožna orodja lahko ustvarijo samoizvlečenje arhivi za različne platforme, kot je MS Windows. Pripomoček kombinira navaden zip arhiv s programom za ekstrakcijo, da ustvari novo izvršljivo (exe) datoteko. Prejemniki datoteke exe jo morajo samo zagnati, da izvlečejo vsebino izvirnega arhiva zip. Izvršna datoteka zažene ekstraktorski program za ekstrahiranje arhiviranih datotek v uporabniško določen izhodni imenik.

Osnovno datoteko zip ali jar lahko pretvorite v izvršljivo datoteko jar na kateri koli platformi Java. Medtem ko lahko samorazvlečen zip ustvari samo izvršljive datoteke, specifične za platformo, lahko samorazvlečno datoteko jar distribuirate in zaženete na kateri koli platformi, ki podpira Javo.

Ustvarjanje samoraspakirajoče datoteke jar je enostavno. Potrebujete samo posebno datoteko manifesta JAR, program za ekstrakcijo na osnovi Jave, datoteko zip ali jar, ki vsebuje datoteke osnovne vsebine, in vse Java SDK-je kozarec uporabnost.

Datoteka manifesta

Če želite narediti izvršljive JAR-je, najprej potrebujete datoteko manifesta z imenom MANIFEST.MF v META-INF imenik. Datoteka manifesta lahko vsebuje več možnih vnosov; vendar za naše namene tukaj moramo samo določiti ime razreda Java, ki vsebuje izvlečni program, ki temelji na Javi glavni () metoda:

Glavni razred: ZipSelfExtractor 

Dodali smo datoteko manifesta z imenom jarmanifest na primer kode tega nasveta. Če želite več informacij o datoteki manifesta, glejte Specifikacija datoteke Jar.

Ekstraktor

Program ekstrakcije lahko ustvarite z različnimi pristopi. Pristop, ki ga predstavljamo tukaj, je preprost in enostaven. Najprej program za ekstrakcijo ugotovi ime samorazvlečne datoteke jar. S tem imenom v roki ekstraktor uporablja standardne vgrajene knjižnice Java zip / jar, da iz arhiva izvleče datoteke z vsebinami. Poiščete lahko celotno izvorno kodo za ZipSelfExtractor v ZipSelfExtractor.java.

Pridobivanje imena datoteke jar v programu za ekstrakcijo je lahko težavno. Čeprav se ime datoteke jar pojavi v ukazni vrstici, se to ime ne posreduje razredu glavni () metoda. Zato v programu za ekstrakcijo z naslednjo kodo pridobimo informacije iz URL-ja, ki kaže na ekstraktor:

 zasebni niz getJarFileName () {myClassName = this.getClass (). getName () + ".class"; URL urlJar = this.getClass (). GetClassLoader (). GetSystemResource (myClassName); Niz urlStr = urlJar.toString (); int from = "jar: datoteka:". length (); int do = urlStr.indexOf ("! /"); vrni urlStr.substring (od, do); } 

Upoštevajte, da v getSystemResource () metoda, ki jo opravimo myClassName namesto ZipSelfExtractor.class. To nam omogoča, da spremenimo ime programa ekstraktorja, ne da bi spremenili tisti del kode. Nastavili smo myClassName tako da poiščete ime trenutnega razreda.

Nato izvlečemo ime datoteke jar. Najprej prosimo za URL datoteke predavanja, ki vsebuje trenutno izvajani razred (to je program za ekstrakcijo). Ko dobimo URL, lahko izrežemo ime datoteke jar. Po definiciji URL programa za ekstrakcijo JAR sledi osnovni obliki:

  1. kozarec:, ki kaže, da se izvršljiva datoteka izvaja znotraj datoteke jar
  2. URL datoteke jar, na primer datoteka: / C: /temp/test.jar, čemur sledi ! znak
  3. Ime notranje poti datoteke v JAR, na primer /ZipSelfExtractor.class

V primeru programa ekstraktorja je lahko URL videti tako:

jar: datoteka: /home/johnm/test/zipper.jar! /ZipSelfExtractor.class 

Zdaj, ko imamo ime datoteke jar, lahko izvedemo ekstrakcijo. Drobce programa za ekstrakcijo se opira na vgrajene knjižnice za manipulacijo datotek zip / jar Java, da stisne datoteke vsebine v arhivu. Za več informacij o knjižnicah za obdelavo datotek zip / jar glejte Viri.

Za lažjo uporabo je ekstraktor grafična aplikacija Java. Aplikacija uporablja JFileChooser razred, da lahko uporabniki določijo ciljni imenik, v katerega želijo pridobiti datoteke. A ProgressMonitor prikazuje potek postopka ekstrakcije. Če lahko datoteka prepiše že obstoječo datoteko, se uporabnika vpraša, ali naj prepiše obstoječo datoteko. Na koncu v standardnem pogovornem oknu predstavimo statistiko ekstrakcije.

Nazadnje program za ekstrakcijo preveri, ali ne ekstrahira datotek, zaradi katerih se datoteka jar samodejno razvleče - datoteka manifesta in datoteka ekstraktorja .razred mapa; program naj samo izvleče izvirno vsebino JAR. Ti dve datoteki sta artefakti samoraspakirajoče datoteke jar in nista del izvirne datoteke osnovne vsebine.

Pakiranje kozarec

Zdaj, ko imamo datoteko manifesta in program za ekstrakcijo, lahko zgradimo samorazvlečno datoteko jar. JDK-je lahko uporabljamo ročno kozarec pripomoček za izdelavo samoraspakirajoče datoteke jar. Na primer, ob predpostavki, da imate poklicano datoteko zip myzip.zip, lahko naredite naslednje korake, da iz njega naredite samorazvlečno datoteko:

  1. cd v imenik, ki vsebuje myzip.zip
  2. Prenesi zadrga.jar
  3. Izvlecite datoteke v trenutni imenik. Naredili smo samoraspakirajoč JAR:
    java -jar zadrga.jar 
  4. Kopirajte zadrga.razred datoteko v ZipSelfExtractor.class
  5. Preimenuj myzip.zip kot myzip.jar
  6. Nadgradnja myzip.jar z jarmanifest in ZipSelfExtractor.class datoteke:
    jar uvfm myzip.jar jarmanifest ZipSelfExtractor.class 

Zdaj myzip.jar se samorazpakuje na vseh platformah, ki vsebujejo Java Runtime Environment (JRE) 1.2 ali novejšo različico. Če želite zagnati samoraspakirajočo datoteko jar, zaženite:

java -jar myzip.jar 

Upoštevajte, da imajo nekatere platforme morda že nastavljene vezi, tako da lahko datoteko jar zaženete samo s klikom na myzip.jar datoteka, ki bo zagnala ekvivalent ukazne vrstice.

Vadba za bralca

Trenutno ZipSelfExtract se ne integrira dobro, če iz obstoječe datoteke jar, ki vsebuje datoteko manifesta, naredite samoraspakirajoč JAR. Samoinstraktorju in navodilom za ustvarjanje dodajte inteligenco, da boste lahko obravnavali obstoječe datoteke jar, ki vsebujejo datoteke manifesta.

Sprostite roko iz JAR-a

Samorazvlečna datoteka jar je dober mehanizem za distribucijo datotek med različnimi platformami. Samoraspakirajoče JAR-je je enostavno ustvariti, minimalna uporabniška zahteva namestitve JRE 1.2 ali novejše pa je primeren kompromis za pridobitev podpore med različnimi platformami.

Namesto da ročno ustvarite samoraspakirajočo datoteko jar, si oglejte ZipAnywhere. ZipAnywhere je popoln zadrgo/kozarec orodje, napisano v 100% čisti Javi. Je brezplačno orodje na osnovi grafičnega uporabniškega vmesnika a WinZip, ki lahko s klikom gumba ustvari samorazvlečne datoteke jar.

Dr. Zunhe Steve Jin je osebni inženir programske opreme pri Rational Software in avtor ZipAnywhere. John D. Mitchell je sodelujoči urednik stolpca N Tricks JavaWorld Tips. John je tudi ustanovitelj in glavni arhitekt podjetja Non, Inc., svetovalne prakse za upravljanje tehnoloških poslovnih tveganj.

Preberite več o tej temi

  • Za ta namig prenesite izvorne datoteke

    //www.javaworld.com/javaworld/javatips/javatip120/zipper.jar

  • "Nasvet Java 49Kako izvleči vire Java iz arhivov JAR in Zip," John D. Mitchell in Arthur Choi (JavaWorld)

    //www.javaworld.com/javaworld/javatips/jw-javatip49.html

  • "Nasvet Java 70Ustvari predmete iz datotek Jar!" John D. Mitchell (JavaWorld)

    //www.javaworld.com/javaworld/javatips/jw-javatip70.html

  • Specifikacija datoteke Jar

    //java.sun.com/j2se/1.3/docs/guide/jar/jar.html

  • Vodnik po ukazni vrstici JAR

    //java.sun.com/j2se/1.3/docs/tooldocs/win32/jar.html

  • ZipAnywhere, samorazširljivo orodje za ustvarjanje JAR na osnovi grafičnega uporabniškega vmesnika

    //www.geocities.com/zipanywhere

  • Oglejte si vse prejšnje Java Nasveti in oddajte svojega

    //www.javaworld.com/javatips/jw-javatips.index.html

  • Naučite se Java od začetka v JavaWorld 's Java 101 stolpec

    //www.javaworld.com/javaworld/topicalindex/jw-ti-java101.html

  • Strokovnjaki za Javo odgovarjajo na najtežja vprašanja v zvezi z Javo JavaWorld 's Vprašanja in odgovori o Javi stolpec

    //www.javaworld.com/javaworld/javaqa/javaqa-index.html

  • Brskaj po člankih po temah v JavaWorld 's Aktualni indeks

    //www.javaworld.com/channel_content/jw-topical-index.shtml

  • Spregovorite na našem forumu Java

    //forums.idg.net/webx?13@@.ee6b802

  • Prijavite se za JavaWorld 'brezplačna tedenska glasila po e-pošti

    //www.idg.net/jw-subscribe

  • Na naslovu .net boste našli ogromno člankov, povezanih z IT, iz naših sestrskih publikacij

To zgodbo z naslovom "Java Tip 120: Izvedba samoraspakirajočih JAR-jev" je prvotno objavil JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found