1. Gambaran keseluruhan
Biasanya, setiap aplikasi yang bermakna merangkumi satu atau lebih fail JAR sebagai dependensi. Namun, ada kalanya fail JAR sendiri mewakili aplikasi mandiri atau aplikasi web.
Kami akan menumpukan pada senario aplikasi mandiri dalam artikel ini. Selepas ini, kami akan menyebutnya sebagai aplikasi JAR.
Dalam tutorial ini, pertama-tama kita akan belajar bagaimana membuat aplikasi JAR. Kemudian, kita akan belajar bagaimana menjalankan aplikasi JAR dengan atau tanpa argumen baris perintah .
2. Buat Aplikasi JAR
Fail JAR boleh mengandungi satu atau lebih kelas utama. Setiap kelas utama adalah pintu masuk aplikasi . Oleh itu, secara teorinya, fail JAR boleh mengandungi lebih dari satu aplikasi, tetapi harus mengandungi sekurang-kurangnya satu kelas utama untuk dapat dijalankan.
Fail JAR boleh mempunyai satu titik masuk yang ditetapkan dalam fail manifesnya . Dalam kes ini, fail JAR adalah JAR yang boleh dilaksanakan. Kelas utama mesti dimasukkan ke dalam fail JAR.
Pertama sekali, mari kita lihat contoh ringkas bagaimana menyusun kelas kami dan membuat JAR yang boleh dilaksanakan dengan fail manifes:
$ javac com/baeldung/jarArguments/*.java $ jar cfm JarExample.jar ../resources/example_manifest.txt com/baeldung/jarArguments/*.class
JAR yang tidak dapat dilaksanakan hanyalah fail JAR yang tidak mempunyai Kelas Utama yang ditentukan dalam fail manifes. Seperti yang akan kita lihat kemudian, kita masih boleh menjalankan kelas utama yang terdapat dalam fail JAR itu sendiri.
Inilah cara kami membuat JAR yang tidak dapat dilaksanakan tanpa fail manifes:
$ jar cf JarExample2.jar com/baeldung/jarArguments/*.class
3. Hujah Garis Perintah Java
Sama seperti aplikasi apa pun, aplikasi JAR menerima sebilangan argumen, termasuk sifar argumen. Semuanya bergantung pada keperluan aplikasi.
Ini membolehkan pengguna menentukan maklumat konfigurasi ketika aplikasi dilancarkan .
Akibatnya, aplikasi dapat menghindari nilai-nilai hardcoded, dan masih dapat menangani banyak kasus penggunaan yang berbeza.
Argumen boleh mengandungi watak alfanumerik, watak unicode dan mungkin beberapa watak khas yang dibenarkan oleh shell, misalnya '@'.
Hujah dipisahkan oleh satu atau lebih ruang . Sekiranya argumen perlu mengandungi spasi, spasi harus ditutup antara petikan. Sama ada petikan tunggal atau petikan ganda berfungsi dengan baik.
Biasanya, untuk aplikasi Java khas, ketika memanggil aplikasi, pengguna memasukkan argumen baris perintah setelah nama kelas.
Walau bagaimanapun, tidak selalu berlaku untuk aplikasi JAR.
Seperti yang telah kita bincangkan, titik masuk kelas utama Java adalah kaedah utama. The hujah semua String s dan akan dihantar kepada kaedah utama sebagai String tatasusunan.
Yang mengatakan, di dalam aplikasi, kita dapat mengubah elemen array String ke jenis data lain, seperti char , int , double , kelas pembungkus mereka , atau jenis lain yang sesuai.
4. Jalankan JAR yang Boleh Dilaksanakan dengan Hujah
Mari lihat sintaks asas untuk menjalankan fail JAR yang boleh dilaksanakan dengan argumen:
java -jar jar-file-name [args…]
JAR yang dapat dilaksanakan yang dibuat sebelumnya adalah aplikasi mudah yang hanya mencetak argumen yang dihantar. Kami boleh menjalankannya dengan sebilangan argumen. Berikut adalah contoh dengan dua hujah:
$ java -jar JarExample.jar "arg 1" [email protected]
Kami akan melihat output berikut di konsol:
Hello Baeldung Reader in JarExample! There are 2 argument(s)! Argument(1):arg 1 Argument(2):[email protected]
Oleh itu, ketika memanggil JAR yang dapat dilaksanakan, kita tidak perlu menentukan nama kelas utama pada baris perintah . Kami hanya menambahkan hujah kami selepas nama fail JAR. Sekiranya kita memberikan nama kelas selepas nama fail JAR yang dapat dilaksanakan, itu hanya menjadi argumen pertama kepada kelas utama yang sebenarnya.
Selalunya, aplikasi JAR adalah JAR yang boleh dilaksanakan. JAR yang boleh dilaksanakan boleh mempunyai maksimum satu kelas utama yang ditentukan dalam fail manifes.
Akibatnya, aplikasi lain dalam file JAR yang dapat dieksekusi sama tidak dapat diatur dalam file manifes, tetapi kita masih dapat menjalankannya dari baris perintah seperti yang kita lakukan untuk JAR yang tidak dapat dilaksanakan. Kami akan melihat dengan tepat bagaimana di bahagian seterusnya.
5. Jalankan JAR yang Tidak Boleh Dilaksanakan dengan Hujah
Untuk menjalankan aplikasi dalam fail JAR yang tidak dapat dilaksanakan, kita harus menggunakan pilihan -cp dan bukan -jar . Kami akan menggunakan pilihan -cp (kependekan dari classpath) untuk menentukan fail JAR yang mengandungi fail kelas yang ingin kami laksanakan:
java -cp jar-file-name main-class-name [args…]
Seperti yang anda lihat, dalam kes ini, kita harus memasukkan nama kelas utama dalam baris perintah, diikuti dengan argumen .
JAR yang tidak dapat dilaksanakan yang dibuat sebelumnya mengandungi aplikasi mudah yang sama. Kita boleh menjalankannya dengan sebarang argumen (termasuk sifar). Inilah contoh dengan dua hujah:
$ java -cp JarExample2.jar com.baeldung.jarArguments.JarExample "arg 1" [email protected]
Dan, seperti yang kita lihat di atas, kita akan melihat output berikut:
Hello Baeldung Reader in JarExample! There are 2 argument(s)! Argument(1):arg 1 Argument(2):[email protected]
6. Kesimpulannya
Dalam tutorial ini, kami mempelajari dua cara menjalankan aplikasi JAR pada baris perintah dengan atau tanpa argumen.
Kami juga menunjukkan bahawa argumen boleh mengandungi spasi dan watak khas (bila dibolehkan oleh shell).
Seperti biasa, kod untuk contoh boleh didapati di GitHub.