Descărcați fișierele de bara de auto-extragere

Creați arhive Java ușor de utilizat, cross-platform Java.

De mulți ani, arhivele zip ale lui Phil Katz erau unul dintre cele mai populare formate de arhivare a fișierelor. Sun a luat zip ca bază pentru arhivele Java (JAR). Sun a extins utilizarea formatelor zip prin diferite convenții, oferind posibilitatea de a împacheta clasele Java în arhivă. Prin adăugarea fișierului manifest JAR, durata de execuție a programelor Java poate găsi cu ușurință și executa direct clasa principală a aplicației Java conținută în fișierul jar.

Unele utilitare zip pot crea arhive de auto-extragere pentru diferite platforme, de exemplu MS Windows. O astfel de utilitate uneste un zip-archiver obișnuit cu un program care generează un nou fișier executabil (exe). Destinatarii fișierului exe ar trebui să ruleze pur și simplu pentru a extrage conținutul arhivei zip. Executivul execută pachetul de despachetare pentru a extrage fișierele din arhivă în directorul de ieșire specificat de utilizator.

Puteți converti un fișier zip sau jar obișnuit într-un jar executabil pe orice platformă cu platformă Java. În timp ce un fișier zip cu auto-extragere poate fi convertit numai într-un fișier executabil pentru o anumită platformă, un fișier de jar cu auto-extragere poate fi distribuit și executat pe orice platformă bazată pe Java.

Crearea unui fișier de jar-auto-extragere este ușor. Este necesar doar un fișier manifest JAR special, un program de despachetare bazat pe Java, un fișier zip sau jar care conține fișiere cu conținut de bază și orice utilitar jar din Java SDK.

Manifest File

Pentru a face fișiere executabile de jar, aveți nevoie, mai presus de toate, de un fișier manifest numit MANIFEST.MF în directorul META-INF. Fișierul manifest poate conține mai multe elemente diferite; cu toate acestea, pentru scopurile noastre aici trebuie doar să definim numele clasei Java care conține metoda principală () bazată pe Java unpacker:

Am adăugat un fișier manifest numit jarmanifest la exemplul de cod pentru acest sfat. Pentru mai multe informații despre fișierul manifest, consultați specificația fișierului jar.

extractor

Programul de despachetare poate fi realizat folosind abordări diferite. Abordarea pe care o oferim aici este simplă și imediată. Mai întâi, programul despachetor recunoaște numele fișierului cu jar de auto-extragere. Cu acest nume, decompresorul folosește biblioteci Java standard zip / jar încorporate pentru a extrage fișierele conținute în arhivă. Sursa completă ZipSelfExtractor poate fi găsită în ZipSelfExtractor.java.

Transferarea numelui unui fișier jar la un program de despachetare poate fi dificilă. Deși numele fișierului jar apare pe linia de comandă, acest nume nu este transmis metodei principale () din clasă. Prin urmare, în programul unpacker, folosim următorul cod pentru a extrage informații de la adresa URL care indică spre despachetare:

Rețineți că în metoda getSystemResource () trecem myClassName în loc de ZipSelfExtractor.class. Acest lucru vă permite să modificați numele programului de despachetare fără a schimba această parte a codului. Căutăm numele clasei curente pentru a determina numele meuClassName.

Apoi extragem numele fișierului de borcan. Mai întâi solicităm o adresă URL a fișierului de clasă care conține clasa curentă (care este despachetul). După ce am primit adresa URL, putem obține numele fișierului cu jar. Prin definiție, adresa URL a pachetului de descarcerare JAR urmează formatul de bază:

  1. borcan. care arată că acest executabil este lansat din fișierul jar.
  2. Adresa URL a unui fișier de tip jar de tip: / C: /temp/test.jar, urmat de un caracter.
  3. Numele căii fișierului din interiorul jar-arhivă de tip /ZipSelfExtractor.class.

În cazul unui pachet de despachetare, adresa URL ar putea să arate ca:

Acum, având numele fișierului de jar, putem efectua decompresia. Decompresorul se bazează pe bibliotecile integrate Java pentru a manipula fișierele zip / jar pentru a despacheta fișierele conținute în arhivă. Consultați Resursele. Pentru a obține mai multe informații despre bibliotecile Java pentru manipularea fișierelor zip / jar.

Pentru ușurința utilizării, pachetul de despachetare este realizat sub forma unei aplicații grafice Java. Aplicația utilizează clasa JFileChooser. Pentru a permite utilizatorilor să specifice adresa de destinație în care doresc să extragă fișierele. ProgressMonitor arată progresul procesului de extracție. Dacă un fișier poate fi scris pe lângă un fișier existent, utilizatorul este întrebat dacă fișierul existent ar trebui să fie suprascris. După finalizare, caseta de dialog standard prezintă statistici privind decompresia.

Ambalarea unui fișier de borcan

Acum, având fișierul manifest și pachetul de despachetare, putem crea un fișier de bara de auto-extragere. Putem folosi manual jar-utilitatea de la JDK pentru a face un fișier de jar-auto-extragere. De exemplu, presupunând că aveți un fișier zip numit myzip.zip. Puteți lua următorii pași pentru a crea un fișier cu auto-extragere din acesta:

  1. Navigați la directorul care conține myzip.zip.
  2. Descărcați zipper.jar.
  3. Extrageți fișierele în directorul curent. Am făcut acest dosar cu auto-extragere.
    java -jar zipper.jar
  4. Copiați fișierul zipper.class la ZipSelfExtractor.class.
  5. Redenumiți myzip.zip în myzip.jar.
  6. Actualizați myzip.jar. adăugând fișierele jarmanifest și ZipSelfExtractor.class.
    jar uvfm myzip.jar jarmanifest ZipSelfExtractor.class

Acum, myzip.jar a devenit un fișier cu auto-extragere pe toate platformele care conțin Java Runtime Environment (JRE) versiunea 1.2 sau o versiune ulterioară. Pentru a rula un fișier de jar de auto-extragere, tastați:

java -jar myzip.jar

Rețineți că unele platforme pot avea deja legături astfel încât fișierul jar să poată fi lansat pentru a fi executat pur și simplu făcând clic pe pictograma fișierului myzip.jar. care este echivalentă cu comanda consolei.

Exercițiu pentru cititor

Actualul ZipSelfExtract nu oferă o bună integrare dacă realizați o arhivă de jar de auto-extragere dintr-un fișier jar existent, care conține deja fișierul manifest. Adăugați intelectul la instrumentele de dezarhivare și la crearea, astfel încât să puteți lucra cu fișierele jar existente care conțin fișierele manifestate.

Libertatea de acțiune cu JAR

Fisierul cu jar de auto-extragere este un mecanism bun pentru distribuirea fișierelor pe diferite platforme. Bara de arhive cu auto-extragere este ușor de creat, iar cerința minimă pentru utilizator de a instala JRE 1.2 sau o versiune ulterioară este un compromis rezonabil, care permite suportul pe mai multe platforme.

În loc să creați un fișier de jar de auto-extragere, testați manual ZipAnywhere. ZipAnywhere este un full-featured zip / jar-utilitar scris în 100% pur Java. Este un instrument freeware cu o interfață grafică, cum ar fi WinZip, care vă permite să creați fișiere cu jar de auto-extragere cu un singur clic al unui buton.


Avertizare. mysql_connect () [function.mysql-connect]: Nu se poate conecta la serverul MySQL local prin socket '/tmp/mysql.sock' (2), în /pub/home/javaport/javaportal/books/show2b.php pe linia 11

Avertizare. mysql_db_query () [function.mysql-db-interogare]: Nu se poate conecta la serverul MySQL local prin socket '/tmp/mysql.sock' (2), în /pub/home/javaport/javaportal/books/show2b.php pe linia 19

Avertizare. mysql_db_query () [function.mysql-db-interogare]: Un link către serverul nu a putut fi stabilită în /pub/home/javaport/javaportal/books/show2b.php pe linia 19

Avertizare. mysql_fetch_array (): furnizat argumentul nu este o resursă valabil rezultat MySQL în /pub/home/javaport/javaportal/books/show2b.php pe linia 30
Aflați la ce vă gândiți cu adevărat acum.


[a apărut o eroare în timpul procesării acestei directive]


Avertizare. mysql_connect () [function.mysql-connect]: Nu se poate conecta la serverul MySQL local prin socket '/tmp/mysql.sock' (2), în /pub/home/javaport/javaportal/news/worldnews.php pe linia 91

Avertizare. mysql_db_query () [function.mysql-db-interogare]: Nu se poate conecta la serverul MySQL local prin socket '/tmp/mysql.sock' (2), în /pub/home/javaport/javaportal/news/worldnews.php pe linia 93

Avertizare. mysql_db_query () [function.mysql-db-interogare]: Un link către serverul nu a putut fi stabilită în /pub/home/javaport/javaportal/news/worldnews.php pe linia 93

Avertizare. mysql_fetch_array (): furnizat argumentul nu este o resursă valabil rezultat MySQL în /pub/home/javaport/javaportal/news/worldnews.php pe linia 95