Artikel ini menjelaskan penggunaan perintah JAR secara rinci, yang akan berguna bagi semua orang untuk mempelajari dan meringkas penggunaan perintah jar. Dengan rincian sebagai berikut:
Paket JAR adalah dokumen terkompresi unik di Java. Faktanya, semua orang dapat memahaminya sebagai paket .zip. Tentu saja ada perbedaannya. Ada file META-INF/MANIFEST.MF di paket JAR. Ketika Anda menemukan paket JAR, maka akan dibuat secara otomatis.
Paket JAR dihasilkan oleh perintah direktori instalasi JDK /bin/jar.exe. Saat kita menginstal JDK dan mengatur jalurnya, kita dapat menggunakan perintah jar.exe secara normal paket alat. Jangan khawatir tentang detail ini.
Mari kita lihat cara penggunaannya:
1. parameter perintah jar:
format perintah jar: jar {ctxuf}[ vme 0 M i ][-C direktori] nama file...
Diantaranya, salah satu dari empat parameter {ctxu} harus dipilih. [vfme 0 M i ] adalah parameter opsional, dan nama file juga diperlukan.
-c membuat paket jar
-t menampilkan daftar isi toples
-x paket toples dekompresi
-u menambahkan file ke paket jar
-f menentukan nama file paket jar
-v menghasilkan laporan terperinci dan mengeluarkannya ke perangkat standar
-m menentukan file manifest.mf (Anda dapat membuat beberapa pengaturan untuk paket jar dan isinya di file manifest.mf)
-0 tidak memampatkan isi paket jar saat membuatnya
-M Jangan buat file manifes (Manifest.mf) untuk semua file. Parameter ini sama dengan pengaturan yang mengabaikan parameter -m.
-i membuat file indeks untuk file jar yang ditentukan
-C berarti pergi ke direktori yang sesuai untuk menjalankan perintah jar, yang setara dengan cd ke direktori tersebut, dan kemudian menjalankan perintah jar tanpa -C
2. Contoh penggunaan toples:
(1) Buat paket toples
jar cf halo.jar halo
Gunakan direktori test untuk menghasilkan paket hello.jar. Jika hello.jar ada, paket tersebut akan ditimpa.
(2) Membuat dan menampilkan proses pengemasan
jar cvf halo.jar halo
Gunakan direktori hello untuk membuat paket hello.jar dan tunjukkan contoh proses pembuatannya:
E:/>jar cvf halo.jar halo
Tampak
Tambahkan: hello/(baca masuk = 0) (tulis keluar = 0) (0% disimpan)
Ditambahkan: hello/TestServlet2.class (baca = 1497) (tulis = 818) (dikompresi sebesar 45%)
Ditambahkan: hello/HelloServlet.class (baca = 1344) (tulis = 736) (dikompresi sebesar 45%)
Ditambahkan: hello/TestServlet1.class (baca = 2037) (tulis = 1118) (dikompresi sebesar 45%)
(3) Paket toples tampilan:
jar tvf hello.jar Melihat isi paket hello.jar. Paket jar yang ditentukan harus benar-benar ada, jika tidak maka akan terjadi FileNoutFoundException.
(4) Buka zip paket toples:
toples xvf halo.jar
Buka zip hello.jar ke direktori saat ini
(5) Tambahkan file ke jar:
jar uf hello.jar HelloWorld.java
Tambahkan HelloWorld.java ke paket hello.jar
(6) Buat paket jar konten yang tidak terkompresi:
jar cvf0 hello.jar *.class
Hasilkan paket jar yang tidak terkompresi menggunakan semua file .class di direktori saat ini
(7) Buat paket jar dengan file manifest.mf:
jar cvfm halo.jar manifest.mf halo
Paket jar yang dibuat memiliki direktori META-INF tambahan, dan direktori META-INF memiliki file manifest.mf tambahan. Adapun peran manifest.mf akan disebutkan nanti.
(8) Abaikan file manifest.mf:
toples cvfM halo.jar halo
Paket jar yang dihasilkan tidak menyertakan direktori META-INF dan file manifest.mf.
(9) Tambahkan aplikasi -C:
jar cvfm halo.jar mymanifest.mf -C halo/
Artinya beralih ke direktori hello dan kemudian menjalankan perintah jar.
(10)-i menghasilkan daftar indeks untuk file jar:
Jika konten dalam paket jar sangat bagus, Anda dapat membuat file indeks untuknya, yang tampaknya sangat bebas masalah.
toples aku halo.jar
Setelah menjalankan perintah ini, ini akan menghasilkan file indeks bernama INDEX.LIST di folder META-INF paket hello.jar. Ini akan menghasilkan daftar dengan nama paket jar di bagian atas.
(11) Ekspor daftar dekompresi:
jar tvf hello.jar >hello.txt Jika Anda ingin melihat proses rinci dekompresi toples, dan paket jar berukuran besar, informasi layar akan berkedip. Saat ini, Anda dapat menampilkan daftar ke file, dan perlahan menghargai!
(12)jar -cvf halo.jar halo/*
Misalnya, struktur direktori aslinya adalah sebagai berikut:
Halo
|---com
|---org
Awalnya Anda hanya ingin mengemas direktori com dan direktori org, tetapi kali ini perintah jar akan dipaketkan bersama dengan hello. Setiap orang harus memperhatikan hal ini. File terkompresi yang dihasilkan oleh perintah jar akan menyertakan direktori setelahnya. Kita harus masuk ke direktori hello dan menjalankan perintah jar.
Catatan: Pengguna dapat menentukan nama file manifest.mf secara sewenang-wenang, tetapi perintah jar hanya mengenali Manifest.mf. Ini akan mengubah nama file yang ditentukan oleh pengguna, sehingga pengguna tidak perlu khawatir.
3. Aturan penulisan file Manifest.mf:
Anda harus memperhatikan beberapa detail saat menulis manifest.mf Ini sangat menuntut. Saya menemukan banyak kesalahan di sini. Siapa yang membuatnya pelit?
(1) Apabila tidak boleh ada baris atau spasi kosong, baris pertama tidak boleh berupa baris kosong (tidak boleh ada baris kosong sebelum baris pertama), tidak boleh ada baris kosong di antara baris, dan tidak boleh ada baris kosong di akhir baris. Ada spasi
(2) Harus ada baris kosong, dan baris terakhir harus baris kosong (tambahkan saja carriage return setelah memasukkan konten Anda)
(3) Harus ada ruang
key: nilai harus ditulis dengan spasi setelah titik koma
4. Cara menggunakan kelas dalam paket jar
Mari kita tulis contoh kecil, sangat intuitif!
kelas akhir publik Orang{ public static int age() { return 30;-> javac Person.java->jar cvf person.jar Person.class
Jadikan file di atas menjadi paket jar
Tulis kelas lain untuk memanggilnya:
kelas publik MyAge{ public static void getAge() { System.out.println(Person.age() }}->javac MyAge.java ->java -classpath person.jar MyAge
Pembaca yang tertarik dapat men-debug program ini
5. Buat paket jar yang dapat dieksekusi
Terkadang ketika Anda menulis sebuah program sendiri, ada banyak kelas, lama kelamaan Anda bahkan tidak tahu mana kelas utama, apalagi mungkin banyak gambar atau file lain yang digunakan sehingga membingungkan untuk membaca. Saat ini, Anda dapat mempertimbangkan untuk membuatnya menjadi paket jar yang dapat dieksekusi...
(1) Edit file manifest.mf dan tambahkan baris berikut
Kelas Utama: MyApplet
Catatan: Ukuran Kelas Utama ditentukan, spasi setelah titik dua, dan Enter setelah MyApplet harus dimasukkan, lalu disimpan.
(2) Pengepakan
jar cvfm FirstApplet.jar manifest.mf MyApplet.kelas
Catatan: manifest.mf ditentukan sebagai jalur kelas (seperti: hello.Hello) atau nama file (applet) tempat file Mani-Class: MyApplet disimpan.
(3) Penggunaan toples yang dapat dieksekusi
java -jar FirstApplet.jar
Itu juga bisa digunakan di <applet></applet>:
<kode applet=Arsip Applet Saya=FirstApplet.jar lebar=200 tinggi=100></applet>
Catatan: Kelas tidak diberikan. Anda cukup menulis satu saja. Anda dapat menentukan nama kelas dan nama paket sesuai keinginan Anda.
6. Perluas kelas Anda sendiri
Di direktori instalasi JDK/direktori jre/lib/ext, SUN memberikan kemudahan bagi kita untuk memperluas kelas kita sendiri. Anda dapat mengetikkan file kelas Anda sendiri ke dalam paket .jar dan menempatkannya di direktori ini. Pemuat kelas bertanggung jawab untuk memuat, dan pemuat kelas ExtClassLoader adalah AppClassL Pemuat induk dari pemuat kelas pemuat, AppClassLoader, terutama bertanggung jawab untuk memuat file di bawah jalur CLASSPATH, dan mekanisme yang digunakan di Java adalah untuk mendelegasikan pemuat induk, sehingga file kelas dalam toples yang disimpan dalam direktori ini tidak memiliki pengaturan. , pemuat kelas dapat menemukan pemuatan normal, bukankah sangat nyaman, ha...
Jika .jar Anda untuk aplikasi applet, Anda dapat menambahkan dua baris berikut ke manifest.mf sebelum mengemasnya ke dalam paket jar.
Jalur Kelas: FirstApplet.jarJalur Kelas: SecondApplet.jarKelas Utama: MyApplet
Catatan: Jalur kelas dapat diatur ke beberapa item, cukup tulis nama paket jar secara langsung. Kelas Utama terutama digunakan ketika ada beberapa file kelas .class di jar. Java tidak mengetahui kelas mana yang utama, jadi harus ditentukan jika hanya ada satu kelas dalam paket jar tidak perlu ditentukan.
Urutan Java memanggil kelas: Kelas di java/lib/ext ---> Kelas yang ditentukan di Manifest.mf --> Kelas di direktori saat ini --> Kelas yang ditentukan di set CLASSPATH.
7. Panggil paket jar di jaringan URL
(1) Hasilkan URL paket jar
URL u=URL baru("jar:"+"FirstApplet.jar"+!/");
(2) Buat objek jarURLConnection
JarURLConnection juc=(JarURLConnection)u.openConnection();
(3) Kembalikan nama kelas utama dalam paket jar
Atribut attr=juc.getMainAttributes();String name=attr.getValue("Mani-Class");
Pastikan untuk memastikan bahwa atribut Mani-Class diatur dengan benar di manifest.mf dalam paket jar Anda.
(4) Buat objek Kelas berdasarkan nama kelas utama yang diperoleh
Kelas c=Kelas.untukNama(nama);
(5) Panggil metode utamanya sesuai dengan objek Kelas:
Metode cm=c.getMethod("main",Kelas baru[]{String.class}); cm.invoke(null,Objek baru[]{});
Tip: Di atas menggunakan pengetahuan tentang mekanisme refleksi Refleksi. Jika Anda tertarik dengan beberapa mekanisme refleksi, Anda dapat melihat konten yang relevan di paket java.lang.reflect.
8. Tips menggunakan perintah JAR:
(1) jar membuat file ZIP terkompresi
jar cvfM TestZIP.jar tes
Cukup tambahkan parameter M agar tidak menghasilkan konten terkait META-INF lalu ubah TestZIP.jar menjadi TestZIP.zip Sederhana sekali....
(2) Gunakan WinRAR untuk mendekompresi file .jar
Seperti yang sudah kami sampaikan di atas, file JAR merupakan file terkompresi khusus, jadi tentu saja dapat didekompresi menggunakan beberapa alat dekompresi yang biasa kami gunakan. Adapun cara mendekompresinya tidak perlu saya beri tahu.
(3) Gunakan WinRAR untuk menghasilkan file .jar
Kami telah mengatakan bahwa perbedaan utama antara paket JAR dan paket ZIP adalah adanya direktori META-INF tambahan di paket JAR. Ada file manifest.mf di bawah direktori META-INF direktori dan kompres.
Struktur direktorinya adalah sebagai berikut:
TestJar
|--META-INF
|--manifest.mf
|--File kelas terkait