Konversi JAR menjadi DEB
Kemas Java JAR untuk sistem Debian dengan jpackage, dpkg-deb, atau FPM.
Konversi file JAR secara online
Kami belum punya konverter online khusus untuk JAR ke DEB, tetapi Anda bisa mengonversi file JAR secara online ke format berikut:
Ingin mengonversi JAR ke DEB?
Beri tahu kami. Kami memilih konversi berikutnya yang akan ditambahkan berdasarkan minat.
Bagaimana mengkonversi jar ke deb berkas
- File terkompresi
- Belum ada peringkat.
apt, pusat software grafis, atau repositori package internal. Operasi ini biasanya merupakan repackaging: JAR tetap berada di dalam DEB, sementara metadata Debian, jalur instalasi, dan launcher opsional ditambahkan.
Apa itu format JAR
File JAR adalah Java archive berbasis ZIP yang berisi file .class terkompilasi, resource, informasi dependency, dan sering kali META-INF/MANIFEST.MF. JAR yang dapat dieksekusi biasanya mendeklarasikan entri manifest Main-Class dan dapat dijalankan dengan java -jar application.jar.
Java developer, build system seperti Maven dan Gradle, IDE, serta distributor aplikasi menggunakan file JAR untuk program standalone, library, plugin, command-line tool, dan build artifact. JAR dapat memerlukan Java release tertentu, dependency JAR eksternal, environment variable, working directory, file konfigurasi, atau native library.
Apa itu format DEB
File DEB adalah Debian binary package yang digunakan oleh Debian, Ubuntu, Linux Mint, dan distribution terkait. Secara internal, file ini merupakan archive ar yang berisi debian-binary, control archive terkompresi dengan package metadata, dan data archive terkompresi yang berisi file-file untuk diinstal.
Berbeda dari JAR, DEB mencatat package name, version, architecture, description, dependency, dan installed file path. Package manager dapat menginstal, menghapus, meng-upgrade, dan melacak file-file tersebut. Package aplikasi Java dapat mendeklarasikan Java runtime yang diperlukan serta menginstal command, desktop entry, atau system service yang menjalankan aplikasi.
Pilih metode packaging
jpackage biasanya merupakan opsi terbaik untuk aplikasi Java yang akan didistribusikan. Tool ini disertakan dalam JDK modern dan dapat membuat DEB dengan application metadata, launcher, serta, jika dikonfigurasi, Java runtime yang dibundel. Tool ini berjalan di Linux dan ditujukan untuk packaging, bukan sekadar mengganti nama atau mengompresi ulang JAR.
dpkg-deb adalah low-level tool native ketika JAR harus menggunakan system Java runtime dan layout package harus dikontrol secara manual. FPM merupakan alternatif praktis untuk internal package yang repeatable. Archive manager seperti Ark atau 7-Zip dapat memeriksa file-file ini, tetapi tidak dapat membuat Debian package metadata yang benar.
Tidak ada online JAR-to-DEB converter yang secara umum dapat diandalkan. Sebuah service tidak dapat dengan aman menyimpulkan Java-version requirement, Debian dependency, launch command, filesystem ownership, service, atau desktop integration. Meng-upload JAR proprietary juga dapat mengekspos application code, embedded credential, atau private asset; buat package secara lokal sebagai gantinya.
Membuat DEB dengan jpackage
- Instal JDK yang menyediakan
jpackage, lalu verifikasi denganjpackage --version. Build aplikasi terlebih dahulu agar main JAR dan setiap dependency JAR yang diperlukan tersedia dalam satu directory sepertidist/. - Jalankan command yang serupa dengan ini pada Debian-based Linux system:
jpackage --type deb \ --name MyApp \ --input dist \ --main-jar application.jar \ --main-class com.example.Main \ --app-version 1.0.0 \ --linux-package-name myapp \ --linux-deb-maintainer 'Maintainer <maintainer@example.com>'Hilangkan
--main-classjika manifest main JAR sudah menyediakanMain-Class. Tambahkan opsi seperti--icon,--linux-shortcut, dan--descriptionjika aplikasi memerlukan desktop integration. Package yang dihasilkan biasanya architecture-specific karena launcher dan bundled runtime dapat berisi native file. - Periksa dan uji file yang dihasilkan dengan
dpkg-deb --info myapp_1.0.0_amd64.deb,dpkg-deb --contents myapp_1.0.0_amd64.deb, dansudo apt install ./myapp_1.0.0_amd64.deb. Nama file dan architecture yang tepat bergantung pada JDK dan build host.
jpackage mungkin memerlukan Debian packaging utility seperti dpkg-deb dan fakeroot. Bundled runtime memperbesar ukuran package, tetapi menghindari keharusan bagi target system untuk menyediakan instalasi Java yang kompatibel.
Membuat package secara manual dengan dpkg-deb
- Instal native packaging tool:
sudo apt install dpkg-dev. - Buat staging tree dan salin JAR ke application-private directory:
mkdir -p myapp/DEBIAN myapp/usr/share/myapp myapp/usr/bin cp application.jar myapp/usr/share/myapp/application.jar - Buat
myapp/DEBIAN/controldengan metadata yang valid. Continuation line dalam long description harus diawali satu spasi:Package: myapp Version: 1.0.0 Section: utils Priority: optional Architecture: all Depends: default-jre-headless Maintainer: Package Maintainer <maintainer@example.com> Description: Java application Packaged Java application launched from a Debian command - Buat launcher di
myapp/usr/bin/myapp:#!/bin/sh exec java -jar /usr/share/myapp/application.jar "$@"Jadikan file tersebut executable dengan
chmod 755 myapp/usr/bin/myapp. - Build, periksa, dan instal package:
dpkg-deb --build myapp myapp_1.0.0_all.deb dpkg-deb --info myapp_1.0.0_all.deb dpkg-deb --contents myapp_1.0.0_all.deb sudo apt install ./myapp_1.0.0_all.deb
Gunakan Architecture: all hanya ketika package tidak berisi CPU-specific native library, launcher, atau bundled runtime. Gunakan nilai yang sesuai seperti amd64 atau arm64 jika sebaliknya. Ganti default-jre-headless dengan dependency tertentu seperti openjdk-17-jre-headless ketika aplikasi memerlukan Java release tersebut. Untuk beberapa dependency JAR, salin file-file tersebut ke dalam package dan sesuaikan launcher classpath atau gunakan startup script yang sudah ada pada aplikasi.
Menggunakan FPM untuk build yang lebih singkat
Setelah melakukan staging aplikasi di bawah myapp/usr dan membuat launcher, FPM dapat membuat DEB dari directory tersebut:
fpm -s dir -t deb -n myapp -v 1.0.0 \
--architecture all \
--depends default-jre-headless \
--description 'Packaged Java application' \
-C myapp usr
Instal FPM dan Ruby prerequisite-nya sesuai current packaging instruction dari distribution tersebut. FPM tidak menemukan Java dependency atau application behavior yang benar secara otomatis, jadi periksa hasilnya dengan dpkg-deb dan uji instalasi serta penghapusan pada setiap distribution yang didukung.
Batasan kompatibilitas
Repackaging tidak mengonversi Java bytecode menjadi native Linux code. Target tetap memerlukan compatible runtime kecuali jpackage membundel salah satunya, dan JAR yang dikompilasi untuk Java release yang lebih baru tidak akan berjalan pada runtime yang lebih lama. DEB juga tidak secara otomatis mengatasi external library yang hilang, native dependency, writable configuration location, service permission, atau environment variable yang diperlukan.
Aplikasi yang memerlukan desktop integration mungkin memerlukan file .desktop dan icon; aplikasi background mungkin memerlukan systemd unit dan maintainer script yang dirancang dengan cermat. Uji fresh installation, upgrade, removal, command-line argument, file ownership, dan operasi menggunakan normal user account. Sign package atau publikasikan melalui signed Debian repository ketika mendistribusikannya di luar local testing.
JAR vs DEB: perbandingan format
Bagaimana format JAR dan DEB dibandingkan pada properti yang paling penting untuk konversi ini.
| Properti | .JAR Java Archive | .DEB Debian binary package |
|---|---|---|
| Kompresi | Keduanya | Keduanya |
| Rasio kompresi | Sedang | Sedang |
| Enkripsi | Ya | Tidak |
| Arsip terpisah | Tidak | Tidak |
| Catatan pemulihan | Tidak | Tidak |
| Dukungan sistem operasi | Luas | Luas |
| Ukuran file umum | Sedang | Kecil |
| Standar terbuka | Ya | Ya |
| Diperkenalkan | 1996 | 1995 |
| Pengembang | Oracle (originally Sun Microsystems) | Debian Project |
| Tipe MIME | application/java-archive | application/vnd.debian.binary-package |