Bagaimana saya bisa mengonversi program Java saya ke file .exe? [Tutup]

500

Jika saya memiliki file sumber Java (* .java) atau file kelas (* .class), bagaimana saya bisa mengubahnya menjadi file .exe?

Saya juga membutuhkan penginstal untuk program saya.

Waseem
sumber
1
hack sederhana untuk applet: tulis kode C dengan main dan panggilan ke fungsi "system" like system ("appletviewer java_src_file");
Madhusoodan P
1
Akankah .exe bekerja di sistem windows tanpa JRE?
Arpit Agarwal
Hanya untuk melengkapi (tidak mencobanya sendiri karena kami membutuhkan exe wrapper, bukan installer): Paket installer juga dapat dibuat menggunakan javapackager (lihat docs.oracle.com/javase/8/docs/technotes/guides/deploy/… ) . Untuk membuat pemasang EXE atau MSI, tambahan Inno Setup atau WiX perlu diunduh dan diinstal.
anre
Mungkin NSIS juga membantu; nsis.sourceforge.net/Java_Launcher
baris.aydinoz

Jawaban:

324

javapackager

Alat Java Packager mengkompilasi, mengemas, dan menyiapkan aplikasi Java dan JavaFX untuk distribusi. Perintah javapackager adalah versi baris perintah.

- Dokumentasi Oracle

The javapackagerkapal utilitas dengan JDK. Itu dapat menghasilkan file .exe dengan -native exebendera, di antara banyak hal lainnya.

WinRun4J

WinRun4j adalah peluncur java untuk windows. Ini adalah alternatif untuk javaw.exe dan memberikan manfaat berikut:

  • Menggunakan file INI untuk menentukan classpath, kelas utama, vm args, program args.
  • Nama yang dapat dieksekusi kustom yang muncul di task manager.
  • Argumen JVM tambahan untuk penggunaan memori yang lebih fleksibel.
  • Pengganti ikon bawaan untuk ikon khusus.
  • [lebih banyak poin peluru mengikuti]

- Halaman web WinRun4J

WinRun4J adalah utilitas open source. Ini memiliki banyak fitur.

paket

Paket JAR Anda, aset dan JVM untuk distribusi di Windows, Linux dan Mac OS X, menambahkan file yang dapat dieksekusi asli untuk membuatnya tampak seperti aplikasi asli. Packr paling cocok untuk aplikasi GUI.

- paket README

packr adalah alat open source lain.

JSmooth

JSmooth adalah Java Executable Wrapper. Ini menciptakan peluncur Windows asli (standar .exe) untuk aplikasi java Anda. Itu membuat penyebaran java jauh lebih halus dan ramah pengguna, karena ia dapat menemukan Java VM yang terinstal dengan sendirinya.

- Situs web JSmooth

JSmooth adalah open source dan memiliki fitur, tetapi sudah sangat tua. Rilis terakhir adalah pada tahun 2007.

JexePack

JexePack adalah alat baris perintah (bagus untuk skrip otomatis) yang memungkinkan Anda untuk mengemas aplikasi Java Anda (file kelas), opsional bersama dengan sumber dayanya (seperti GIF / JPG / TXT / dll), ke dalam satu-satunya Windows EXE 32-bit terkompresi. , yang berjalan menggunakan Java Runtime Environment Sun. Aplikasi konsol dan jendela didukung.

- Situs web JexePack

JexePack adalah perangkat uji coba. Diperlukan pembayaran untuk penggunaan produksi, dan file exe yang dibuat dengan alat ini akan menampilkan "pengingat" tanpa pembayaran. Juga, rilis terakhir adalah pada tahun 2013.

Instal Di Mana Saja

InstallAnywhere memudahkan pengembang untuk membuat perangkat lunak instalasi profesional untuk platform apa pun. Dengan InstallAnywhere, Anda akan beradaptasi dengan perubahan industri dengan cepat, mendapatkan pasar lebih cepat dan memberikan pengalaman pelanggan yang menarik. Dan ketahui kerentanan komponen OSS proyek Anda sebelum mengirim.

- Situs web InstallAnywhere

InstallAnywhere adalah paket komersial / perusahaan yang menghasilkan installer untuk program berbasis Java. Mungkin mampu membuat file .exe.

File JAR yang dapat dieksekusi

Sebagai alternatif untuk file .exe, Anda dapat membuat file JAR yang secara otomatis berjalan ketika diklik ganda, dengan menambahkan titik entri ke manifes JAR .


Untuk informasi lebih lanjut

Sumber informasi yang sangat baik tentang topik ini adalah artikel Excelsior " Konversi Java ke EXE - Mengapa, Kapan, Kapan Tidak dan Bagaimana ".

Lihat juga artikel pendamping " JAR Terbaik untuk Alat Konversi EXE, Gratis dan Komersial ".

Jay
sumber
Lebih baik menggunakan gerhana dan Jsmooth. Ikuti langkah-langkah ini regilanj.wordpress.com/2017/11/19/…
Maria Irudaya Regilan J
Apakah ada di antara ini yang sesuai dengan situasi saya? stackoverflow.com/questions/56674075/...
gunslingor atau
112

Launch4j

Launch4j adalah alat lintas platform untuk membungkus aplikasi Java yang didistribusikan sebagai toples di executable asli Windows yang ringan. Dapat dieksekusi dapat dikonfigurasi untuk mencari versi JRE tertentu atau menggunakan yang dibundel, dan dimungkinkan untuk mengatur opsi runtime, seperti ukuran heap awal / maks. Wrapper juga memberikan pengalaman pengguna yang lebih baik melalui ikon aplikasi, layar splash pra-JRE asli, nama proses kustom, dan halaman unduhan Java jika JRE yang sesuai tidak dapat ditemukan.

- Situs web Launch4j

the.duckman
sumber
35

PEMBARUAN: GCJ sudah mati. Secara resmi dihapus dari proyek GCC pada 2016. Bahkan sebelum itu, praktis ditinggalkan selama tujuh tahun, dan dalam hal apapun itu tidak pernah cukup lengkap untuk berfungsi sebagai alternatif implementasi Java yang layak.

Cari kompiler Java AOT lain.

GCJ: Kompilator GNU untuk Java dapat mengkompilasi kode sumber Java ke dalam kode mesin asli, termasuk Windows yang dapat dieksekusi.

Meskipun tidak semua yang ada di Java didukung di bawah GCJ, terutama komponen GUI (lihat Apa Java API yang didukung? Seberapa lengkap dukungannya? Pertanyaan dari FAQ ). Saya belum banyak menggunakan GCJ, tetapi dari pengujian terbatas yang saya lakukan dengan aplikasi konsol, sepertinya baik-baik saja.

Salah satu kelemahan menggunakan GCJ untuk membuat executable mandiri adalah bahwa ukuran EXE yang dihasilkan bisa sangat besar. Suatu kali saya menyusun aplikasi konsol sepele di GCJ dan hasilnya adalah executable sekitar 1 MB. (Mungkin ada cara di sekitar ini yang saya tidak sadari. Pilihan lain adalah program kompresi yang dapat dieksekusi.)

Dalam hal penginstal sumber terbuka, Sistem Instalasi Nullsoft Scriptable adalah penginstal skrip. Jika Anda penasaran, ada contoh kontribusi pengguna tentang cara mendeteksi keberadaan JRE dan menginstalnya secara otomatis jika JRE yang diperlukan tidak diinstal. (Hanya untuk memberi tahu Anda, saya belum pernah menggunakan NSIS sebelumnya.)

Untuk informasi lebih lanjut tentang penggunaan NSIS untuk menginstal aplikasi Java, silakan lihat respons saya untuk pertanyaan " Apa cara terbaik untuk mendistribusikan aplikasi Java? "

coobird
sumber
2
Project sebenarnya sudah mati, seperti yang saya lihat. Tidak ada berita di halaman utama
Vladislav Rastrusny
Pengembangan GNU Java telah cukup banyak dipindahkan ke OpenJDK, karena sumber-sumber non-Oracle tidak dapat mengakses TCK untuk validasi.
Thorbjørn Ravn Andersen
25

Anda bisa membuat file batch dengan kode berikut:

start javaw -jar JarFile.jar

dan konversikan .bat menjadi .exe menggunakan konverter .bat ke .exe.

MultiplyByZer0
sumber
2
Pembungkus yang baik membawa JRE atau menginstalnya jika diperlukan dan menangani situasi kesalahan.
Thorbjørn Ravn Andersen
16

Kami menggunakan Install4J untuk membangun installer untuk windows atau unix environment.

Mudah disesuaikan sampai pada titik di mana Anda ingin menulis skrip untuk tindakan khusus yang tidak dapat dilakukan dengan dialog standar. Tetapi meskipun kami menyiapkan layanan windows dengan itu, kami hanya menggunakan komponen standar.

  • installer + launcher
  • windows atau unix
  • skrip di Jawa
  • tugas semut
  • banyak panel dan tindakan standar yang dapat disesuaikan
  • opsional termasuk atau mengunduh JRE
  • juga dapat meluncurkan layanan windows
  • berbagai bahasa

Saya pikir Launch4J berasal dari perusahaan yang sama (hanya peluncur - tanpa penginstal).

PS: sayangnya saya tidak dibayar untuk pengesahan ini. Saya suka alat itu.

Stroboskop
sumber
15

Java Web Start terbaru telah ditingkatkan untuk memungkinkan operasi offline yang baik serta memungkinkan "instalasi lokal". Perlu melihat ke dalam.

EDIT 2018: Java Web Start tidak lagi dibundel dengan JDK terbaru. Oracle malah mendorong ke arah "sebarkan aplikasi Anda secara lokal dengan JRE terlampir" sebagai gantinya.

Thorbjørn Ravn Andersen
sumber
Tampaknya JWS telah memperketat keamanan, sehingga membutuhkan lebih banyak upaya dari sebelumnya untuk bisa berjalan. Ini mungkin masih berguna untuk installer.
Thorbjørn Ravn Andersen
9

Jika Anda perlu mengonversi seluruh aplikasi Anda ke kode asli, yaitu EXE plus DLL, ada ExcelsiorJET . Saya menemukan ini bekerja dengan baik dan memberikan alternatif untuk menggabungkan JRE.

mdma
sumber
Sangat mahal.
Mordechai
9

IMHO JSmooth tampaknya melakukan pekerjaan yang cukup bagus.

jussij
sumber
6

Saya akan mengatakan launch4j adalah alat terbaik untuk mengubah kode sumber java (.java) menjadi file .exe. Anda bahkan dapat menggabungkan jre dengannya untuk didistribusikan dan exe tersebut bahkan dapat di-ikonifikasi. Meskipun ukuran aplikasi meningkat, itu memastikan bahwa aplikasi akan berfungsi dengan baik bahkan jika pengguna tidak memiliki jre diinstal. Ini juga memastikan bahwa Anda dapat memberikan jre spesifik yang diperlukan untuk aplikasi Anda tanpa pengguna harus menginstalnya secara terpisah. Namun sayangnya, java kehilangan arti pentingnya. Dukungan multi platformnya sama sekali diabaikan dan aplikasi terakhir hanya didukung untuk windows. Tapi itu bukan masalah besar, jika Anda hanya melayani pengguna windows.

Pratanu Mandal
sumber
5

Anda bisa menggunakan Janel . Yang terakhir ini berfungsi sebagai peluncur aplikasi atau peluncur layanan (tersedia dari 4.x).

L. BIZE
sumber
4

Atau, Anda dapat menggunakan beberapa penerjemah java-ke-c (misalnya, JCGO ) dan mengkompilasi file C yang dihasilkan ke file binary (.exe) asli untuk platform target.

Ivan Maidanski
sumber
2
Saya sangat meragukan efektivitas metode ini. Saya harus melihatnya untuk mempercayainya (pikirkan fakta bahwa sebagian besar kode Java adalah panggilan API ke JRE, dan semua itu tidak ada pada C, jangan pernah lupakan perbedaan dalam bagaimana bahasa bekerja).
Camilo Martin
3

Saya dapat dimaafkan karena menentang konversi program java ke Aplikasi .exe dan saya punya alasan. yang utama adalah bahwa program java dapat dikompilasi ke file jar dari Banyak IDE. Ketika program ini dalam format .jar, ia dapat berjalan di Beberapa Platform sebagai lawan dari .exe yang hanya akan berjalan di Lingkungan yang sangat terbatas. Saya berpendapat bahwa Program Java tidak akan dikonversi ke Exe kecuali sangat diperlukan. Seseorang selalu dapat menulis file .bat yang menjalankan program Java saat itu adalah file jar.

jika benar-benar perlu untuk mengubahnya menjadi exe, konverter Jar2Exe diam-diam melakukan itu dan orang juga dapat melampirkan Perpustakaan yang dikompilasi bersama dengan Aplikasi Utama.

ErrorNotFoundException
sumber
Masalahnya, kekuatan java adalah portabilitas, tetapi banyak orang hanya membutuhkan windows exe dasar. Secara pribadi, saya suka konsep java ... tetapi ingin mendistribusikan sesuatu yang dapat dijalankan oleh pengguna saya, tanpa harus mengunduh JRE.
Balmipour
2

Anda dapat mengonversi jar ke exe menggunakan jar2exe . Namun Anda perlu membeli perangkat lunak. Jika Anda memerlukan perangkat lunak open source saya sarankan JSmooth .

Raghunandan
sumber