Implementasi Paket JAR
Paket JAR dapat dikemas menggunakan JAR Directive. Memasuki toples di baris perintah dapat melihat konten arahan jar
Dari dua contoh yang ditunjukkan di pertunjukan terakhir, ada dua cara untuk mengemas. Perbedaan antara keduanya adalah apakah akan menggunakan file manifes manifes yang Anda tentukan. Contoh pertama tidak dikemas menggunakan file manifes, sehingga file manifes dalam paket JAR yang dihasilkan akhir adalah file default. Metode ini cocok untuk struktur paket JAR yang relatif sederhana, tidak ada ketergantungan paket JAR lainnya dan paket JAR yang dihasilkan tidak perlu dieksekusi. Paket JAR yang dihasilkan dengan cara ini tidak dapat dieksekusi menggunakan perintah java -jar XXX.jar karena entri program tidak ditentukan dalam file manifes. Contoh kedua adalah metode pengemasan yang relatif umum, yaitu, gunakan file manifes khusus untuk berpartisipasi dalam kemasan, sehingga Anda dapat menambahkan dependensi ke paket, dan menentukan entri program untuk mengimplementasikan java -jar XXX.jar untuk langsung menjalankan paket JAR.
Metode pengemasan sederhana pertama
Yang termudah adalah mengemas dan mengeluarkan file bytecode kelas yang dikompilasi di folder saat ini. Contohnya adalah sebagai berikut:
Tulis tiga file java, test1.java test2.java dan main.java
test kelas publik {public static void main (string [] args) {} public void display () {System.out.println ("This is Class test1"); }}dan file test2.java
Public Class test2 {public static void main (string [] args) {} public void display () {System.out.println ("This is Class test2"); }}Main.java
kelas publik {public static void main (string [] args) {for (string a: args) {system.out.println ("parameter give"+a); } test1 t1 = test1 baru (); t1.display (); test2 t2 = test2 baru (); t2.display (); }} Kompilasi ketiga file ini pada baris perintah dan gunakan perintah javac untuk dikompilasi.
Gunakan arahan jar untuk mengemas file kelas yang dikompilasi
Daftar yang ditambahkan ditampilkan selama pengemasan. Gunakan alat dekompresi untuk membuka paket test.jar yang dihasilkan dan Anda dapat melihat struktur berikut:
Selain file tiga kelas yang dikompilasi, ada folder meta-INF tambahan, yang berisi manifest.mf (file daftar). Peran file ini sangat penting, seperti yang dijelaskan nanti. Mari kita lihat isinya di dalamnya terlebih dahulu
Manifes yang sangat sederhana, hanya berisi versi manifes dan versi java.
Eksekusi java -jar test.jar saat ini memiliki efek berikut:
Tidak ada kesalahan atribut daftar utama yang dilaporkan. Ini karena kami menggunakan metode pertama untuk menghasilkan toples menggunakan manifes default. Manifes default tidak menentukan entri program, sehingga kesalahan terjadi.
Anda dapat secara langsung mengubah file manifes dalam paket JAR (buka alat dekompresi dan simpan setelah mengubahnya), dan ubah ke efek berikut:
Setelah menjalankan java -jar test.jar lagi, program memasuki konten yang benar:
Atribut kelas utama ditambahkan ke file manifes dan menentukan entri program, yang mewujudkan pelaksanaan langsung file JAR.
Oleh karena itu, menggunakan manifes default tidak dapat secara langsung menjalankan file jar. Baik gunakan file manifes yang Anda definisikan untuk mengemasnya atau ubah file manifes dalam paket.
Cara kedua untuk mengemas
Metode pengemasan kedua lebih umum. Secara umum, baris pertama file Java adalah package XXX; Artinya, nama paket, juga menentukan jalur file kelas yang dikompilasi. Ketika ada beberapa file Java yang akan dikompilasi dan dikemas dan mereka memiliki nama paket yang berbeda, sangat tidak realistis untuk menulis satu file pada saat mengemasnya sesuai dengan metode pertama, jadi ada metode kedua. Masukkan semua direktori yang ada di file kelas untuk dikemas dan paket guci ketergantungan di folder root (seperti FOO), dan kemudian tulis file manifes manifes untuk menentukan pintu masuk program dan paket stoples ketergantungan lainnya yang ditambahkan. Dalam melaksanakan perintah:
Perhatikan bahwa ada ruang dan titik di belakang foo/ folder di atas perintah di atas
Mari kita lihat contoh di bawah ini
Hal yang sama adalah test1.java, test2.java dan main.java, tetapi masing -masing memiliki nama paket sendiri.
paket cn.mytest1; public class test1 {public static void main (string [] args) {} public void display () {System.out.println ("This is Class test1"); }} paket cn.mytest2; public class test2 {public static void main (string [] args) {} public void display () {System.out.println ("This is Class test2"); }} paket cn.mymain; import cn.mytest1.test1; import cn.mytest2.test2; kelas publik utama {public static void main (string [] args) {for (string item: args) {system.out.println ("Parameter passing"+item); } test1 t1 = test1 baru (); test2 t2 = test2 baru (); t1.display (); t2.display (); }} Juga dikompilasi menggunakan Javac Directive, ada file tiga kelas di jalur yang berbeda karena nama paket mereka berbeda. Letakkan semua folder yang dikompilasi yang berisi file kelas di folder FOO:
Kemudian tulis file manifes di luar foo:
Isi manifes adalah sebagai berikut:
Catatan : Baris terakhir dari file manifes adalah baris kosong.
Jalankan perintah dari baris perintah: jar cvfm test.jar MANIFEST.MF -C foo/ .
Uji apakah paket JAR dapat dijalankan langsung pada baris perintah, gunakan perintah java -jar test.jar
Paket dengan benar dan jalankan stoples dengan sukses.
Pendahuluan File Manifes
Melalui dua contoh di atas, kita dapat melihat bahwa file manifes diperlukan untuk pengemasan JAR. File manifes menjelaskan informasi terperinci dari file JAR yang dikemas dan ada di folder meta-INF yang dikemas. Konten utama dari file manifes sederhana adalah sebagai berikut:
Hal utama adalah bahwa tiga atribut jalur kelas kelas utama manifes sangat penting ketika membuat paket stoples. Manifest-versi adalah nomor versi, cukup tuliskan. Kelas utama adalah program entri dari Paket JAR, yang menentukan nama lengkap kelas yang sedang berjalan (harus menyertakan nama paket). Dengan cara ini, Anda dapat menggunakan java -jar name.jar untuk menjalankan paket jar secara langsung. Jalur kelas ketiga mengacu pada paket toples lain yang perlu diandalkan saat pengemasan. Saat pengemasan, program Anda juga dapat berisi paket toples lainnya, jadi Anda perlu menambahkan dependensi.
Perhatikan bahwa ada ruang antara usus besar dan konten dari setiap atribut manifes, dan harus ada garis kosong di akhir setelah menulis, jika tidak, masih akan ada kesalahan dalam runtime yang dapat ditemukan atribut daftar utama.
ringkasan
Hal yang mudah untuk membuat kesalahan dalam pengemasan file jar adalah penulisan file manifes manifes, yang rentan untuk memformat kesalahan seperti beberapa ruang antara usus besar atribut dan konten, tidak ada ruang antara penambahan ketergantungan dalam jalur kelas, tidak ada banyak ketergantungan.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.