Programmēšana

Java Tip 120: izpildiet pašizpletes JAR

Daudzus gadus Fila Katza arhīva izveide zip ir bijis viens no populārākajiem failu arhivēšanas formātiem. Sun ir izmantojis zip formātu kā Java arhīva (JAR) pamatu. Sun ir paplašinājis zip formāta lietošanu ar dažādām konvencijām, lai jūs varētu iesaiņot Java klases arhīva failā. Ar JAR pievienošanu manifests failu, Java izpildlaiks var viegli atrast un tieši izpildīt Java faila galveno klasi, kas atrodas burka failā.

Daži zip lietderības rīkus var izveidot pašizpletes arhīvi dažādām platformām, piemēram, MS Windows. Lietderības rīks apvieno parasto zip arhīvu ar ekstraktora programmu, lai ģenerētu jaunu izpildāmo (exe) failu. Exe faila saņēmējiem tas ir jāpalaiž tikai, lai izvilktu oriģinālo zip arhīva saturu. Izpildāmā palaiž ekstraktora programmu, lai arhivētos failus izvilktu lietotāja norādītajā izvades direktorijā.

Bāzes zip vai jar failu var pārveidot par izpildāmu jar failu jebkurā Java platformā. Tā kā pašizpletes ZIP var izveidot tikai platformai specifiskus izpildāmos failus, pašizpletes jar failu var izplatīt un palaist uz jebkuras platformas, kas atbalsta Java.

Pašizplūdes burka faila izveidošana ir vienkārša. Jums vienkārši nepieciešams īpašs JAR manifesta fails, Java balstīta ekstrakcijas programma, zip vai jar fails, kas satur pamata satura failus, un visi Java SDK burka lietderības lietojumprogramma.

Manifesta fails

Lai izveidotu izpildāmos JAR, vispirms ir nepieciešams manifesta fails ar nosaukumu MANIFEST.MF iekš META-INF direktorijā. Manifesta failā var būt vairāki iespējamie ieraksti; tomēr mūsu mērķiem šeit vienkārši jānorāda Java klases nosaukums, kas satur Java balstītas ekstraktora programmas galvenais () metode:

Galvenā klase: ZipSelfExtractor 

Mēs esam pievienojuši manifesta failu ar nosaukumu jarmanifest uz šī padoma parauga kodu. Plašāku informāciju par manifesta failu skatiet Jar faila specifikācijā.

Nosūcējs

Ekstraktora programmu var izveidot, izmantojot dažādas pieejas. Mūsu pieeja šeit ir vienkārša un vienkārša. Pirmkārt, ieguves programma izdomā pašizpletes jar faila nosaukumu. Kad šis vārds ir rokā, nosūcējs izmanto standarta iebūvētās Java zip / jar bibliotēkas, lai izvilktu satura failus no arhīva. Jūs varat atrast pilnu vietnes avota kodu ZipSelfExtractor iekšā ZipSelfExtractor.java.

Iegūt burkas faila nosaukumu ekstraktora programmā var būt sarežģīti. Lai gan burka faila nosaukums parādās komandrindā, šis nosaukums netiek nodots klases nosaukumam galvenais () metodi. Tāpēc ekstraktora programmā mēs izmantojam šādu kodu, lai iegūtu informāciju no URL, kas norāda uz ekstraktoru:

 privāta virkne getJarFileName () {myClassName = this.getClass (). getName () + ".class"; URL urlJar = this.getClass (). GetClassLoader (). GetSystemResource (myClassName); String urlStr = urlJar.toString (); int no = "burka: fails:". garums (); int līdz = urlStr.indexOf ("! /"); atgriezt urlStr.substring (no, uz); } 

Ievērojiet, ka getSystemResource () metodi mēs izturam myClassName tā vietā ZipSelfExtractor.class. Tas ļauj mums mainīt ekstraktora programmas nosaukumu, nemainot šo koda daļu. Mēs iestatījām myClassName meklējot pašreizējās klases nosaukumu.

Pēc tam mēs izvelkam burka faila nosaukumu. Pirmkārt, mēs lūdzam URL klases failam, kurā atrodas pašlaik darbojošā klase (kas ir izvilkšanas programma). Kad mums būs vietrādis URL, mēs varēsim izgriezt burkas faila nosaukumu. Pēc definīcijas JAR nosūcēja programmas URL atbilst pamatformātam:

  1. burka:, kas parāda, ka izpildāmā programma darbojas no burka faila iekšpuses
  2. Burka faila URL, piemēram, fails: / C: /temp/test.jar, kam seko ! raksturs
  3. JAR faila iekšējā ceļa nosaukums, piemēram, /ZipSelfExtractor.class

Ekstraktora programmā URL varētu izskatīties šādi:

burka: fails: /home/johnm/test/zipper.jar! /ZipSelfExtractor.class 

Tagad, kad mums ir burka faila nosaukums, mēs varam veikt ekstrakciju. Iegūšanas programmas iekšas balstās uz iebūvētām Java zip / jar failu manipulācijas bibliotēkām, lai saspiestu arhīvā esošos satura failus. Skatiet resursus, lai uzzinātu vairāk par zip / jar failu manipulācijas bibliotēkām.

Lietošanas ērtībai nosūcējs ir grafiska Java lietojumprogramma. Lietojumprogramma izmanto JFileChooser klasē, lai ļautu lietotājiem norādīt galamērķa direktoriju, kurā viņi vēlas iegūt failus. A ProgressMonitor parāda ieguves procesa gaitu. Ja fails var pārrakstīt jau esošu failu, lietotājam tiek jautāts, vai pārrakstīt esošo failu. Noslēgumā standarta dialoglodziņš parāda ieguves statistiku.

Visbeidzot, nosūcēja programma pārbauda, ​​vai tā neizvelk failus, kas padara burka failu pašizpletes - manifesta failu un nosūcēju .klase fails; programmai vajadzētu tikai iegūt oriģinālo JAR saturu. Šie divi faili ir pašizpletes jar faila artefakti un nav oriģinālo pamata satura failu daļa.

Iesaiņo burku failu

Tagad, kad mums ir manifesta fails un izvilkšanas programma, mēs varam izveidot pašizpletes jar failu. Mēs varam manuāli izmantot JDK burka lietderība pašizpletes burka faila izveidošanai. Piemēram, pieņemot, ka jums ir zip fails ar nosaukumu myzip.zip, varat veikt šādas darbības, lai no tā izveidotu pašizpletes failu:

  1. cd uz direktoriju, kurā ir myzip.zip
  2. Lejupielādēt rāvējslēdzējs.jar
  3. Izvelciet failus pašreizējā direktorijā. Mēs to esam izveidojuši par pašizpletes JAR:
    java -jar rāvējslēdzējs.jar 
  4. Nokopējiet rāvējslēdzējs.klase failu uz ZipSelfExtractor.class
  5. Pārdēvēt myzip.zipmyzip.jar
  6. Atjaunināt myzip.jar Ar jarmanifest un ZipSelfExtractor.class faili:
    jar uvfm myzip.jar jarmanifest ZipSelfExtractor.class 

Tagad myzip.jar ir pašizpletes visās platformās, kurās ir Java Runtime Environment (JRE) 1.2 vai jaunāka versija. Lai izpildītu pašizpletes jar failu, palaidiet:

java -jar myzip.jar 

Ņemiet vērā, ka dažās platformās, iespējams, jau ir izveidoti stiprinājumi, lai jūs varētu izpildīt jar failu, vienkārši noklikšķinot uz myzip.jar faila ikona, kas darbinās komandrindas ekvivalentu.

Vingrinājums lasītājam

Esošais ZipSelfExtract nav labi integrēts, ja no esošā burka faila, kurā ir manifesta fails, izveidojat pašizpletes JAR. Pievienojiet intelektu pašizplūšanai un izveides instrukcijām, lai varētu tikt galā ar esošajiem burku failiem, kas satur manifesta failus.

Atbrīvojiet savu roku no JAR

Pašizplūdes burka fails ir labs mehānisms dažādu platformu failu izplatīšanai. Pašizplūdes JAR ir viegli izveidot, un minimālā lietotāja prasība pēc JRE 1.2 vai jaunākas instalācijas ir pamatota kompromiss, lai iegūtu starpplatformu atbalstu.

Tā vietā, lai manuāli izveidotu pašizpletes burku failu, skatiet vietni ZipAnywhere. ZipAnywhere ir pilnvērtīgs zip/burka lietderības rīks, kas rakstīts 100% tīrā Java valodā. Tas ir bezmaksas GUI balstīts rīks a la WinZip un ar pogas klikšķi var izveidot pašizpletes jar failus.

Dr. Zunhe Stīvs Džins ir personāla programmatūras inženieris uzņēmumā Rational Software un grāmatas ZipAnywhere autors. Džons D. Mičels ir JavaWorld Tips N triku slejas redaktors. Džons ir arī tehnoloģiskā biznesa riska vadības konsultāciju uzņēmuma Non, Inc. dibinātājs un galvenais arhitekts.

Uzziniet vairāk par šo tēmu

  • Lejupielādējiet šī padoma avota failus

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

  • "Java Tip 49. Kā iegūt Java resursus no JAR un Zip arhīviem", Džons D. Mičels un Artūrs Čoi (JavaWorld)

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

  • "Java Tip 70Izveidojiet objektus no Jar Files!" Džons D. Mičels (JavaWorld)

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

  • Jar faila specifikācija

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

  • JAR komandrindas ceļvedis

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

  • ZipAnywhere, GUI balstīts pašizpletes JAR izveides rīks

    //www.geocities.com/zipanywhere

  • Skatīt visu iepriekšējo Java padomi un iesniedziet savu

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

  • Uzziniet Java no paša sākuma JavaWorld 's Java 101 kolonna

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

  • Java eksperti atbild uz jūsu visgrūtākajiem Java jautājumiem JavaWorld 's Java jautājumi un atbildes kolonna

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

  • Pārlūkojiet rakstus pēc tēmas JavaWorld 's Aktuālais rādītājs

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

  • Runājiet mūsu Java forumā

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

  • Pierakstieties JavaWorld 's bezmaksas iknedēļas e-pasta biļeteni

    //www.idg.net/jw-subscribe

  • Jūs atradīsit daudz ar IT saistītu rakstu no mūsu māsas publikācijām vietnē .net

Šo stāstu “Java Tip 120: Execute self-extract JARs” sākotnēji publicēja JavaWorld.

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