Apa perbedaan dalam gerhana antara mengekspor sebagai file JAR dan mengekspor sebagai file JAR yang dapat dijalankan? Bukankah mereka berdua bisa dijalankan? Apa pro / kontra masing-masing?
88
Jar yang dapat dijalankan berisi file MANIFEST.MF, yang mendefinisikan kelas Utama yang akan dieksekusi saat jar dijalankan.
Jars yang tidak dapat dijalankan hanyalah pustaka kelas, yang dapat ditambahkan ke jalur kelas sehingga kode digunakan kembali (juga berisi file manifes, tetapi tidak ada kelas utama di sana)
Jar yang dapat dijalankan adalah file jar yang memiliki file Manifes tertanam yang menyertakan deklarasi "Kelas-Utama:". "Main-Class" harus didefinisikan sehingga runtime java tahu kelas mana yang harus dipanggil saat jar "dijalankan". Jika jar tidak menyertakan manifes dengan "Main-Class:" itu tidak dianggap sebagai "jar runnable" - itu hanya perpustakaan kode Java.
Saya rasa inilah perbedaan dalam cara Eclipse mengekspor toples, tetapi tidak 100% yakin.
Lihat tautan ini untuk info lebih lanjut: http://www.skylit.com/javamethods/faqs/createjar.html
sumber
Dengan file JAR standar, Anda harus menentukan kelas dengan metode utama pada baris perintah saat menjalankan jar. Dengan JAR yang dapat dijalankan, ada file manifes yang akan menyimpan informasi itu sehingga Anda bisa mengetik
java -jar myRunnable.jar
, atau cukup klik dua kali.sumber
Dalam kasus saya, saya biasa mengekspor sebagai jar ketika saya memiliki semua kelas utama dan semua direktori jalur perpustakaan yang ditentukan di manifest.mf. Jika banyak aplikasi menggunakan pustaka yang sama, tidak perlu mengekspor pustaka bersama untuk setiap jar. Itu membuat stoples lebih cepat. Namun, sering kali karena masalah konfigurasi di jalur kelas server yang berbeda tidak dapat mengakses pustaka dan dalam hal ini masuk akal untuk mengekspor jar yang dapat dijalankan yang membuat file lambat untuk dieksekusi dan besar.
sumber