Java Eclipse: Perbedaan antara mengekspor sebagai JAR dan mengekspor sebagai JAR yang Dapat Dijalankan

88

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?

baik sebenarnya
sumber

Jawaban:

99

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)

Bozho
sumber
Ketika kita mengekspor file hanya sebagai jar dan bukan jar runnable, kita harus menentukan kelas utama dan pustaka classpath di manifest.mf.
MR DAN
20

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

Andy White
sumber
17

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.

Eric-Karl
sumber
0

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.

TUAN DAN
sumber