Panduan untuk Membuat dan Menjalankan File Jar di Java

1. Ikhtisar

Biasanya, mudah untuk menggabungkan banyak file kelas Java ke dalam satu file arsip.

Dalam tutorial ini, kita akan membahas seluk beluk bekerja dengan file jar - atau J ava AR chive - di Java.

Secara khusus, kita akan menggunakan aplikasi sederhana dan menjelajahi berbagai cara untuk mengemas dan menjalankannya sebagai stoples. Kami juga akan menjawab beberapa keingintahuan seperti cara mudah membaca file manifes jar di sepanjang jalan.

2. Pengaturan Program Java

Sebelum kita dapat membuat file jar yang dapat dijalankan, aplikasi kita harus memiliki kelas dengan metode utama . Kelas ini memberikan titik masuk kita ke dalam aplikasi:

public static void main(String[] args) { System.out.println("Hello Baeldung Reader!"); }

3. Perintah Jar

Sekarang kita sudah siap, mari kita kompilasi kode kita dan buat file jar kita.

Kita bisa melakukan ini dengan javac dari baris perintah:

javac com/baeldung/jar/*.java

The javac perintah menciptakan JarExample.class di com / baeldung / jar direktori. Sekarang kita dapat mengemasnya menjadi file jar.

3.1. Menggunakan Default

Untuk membuat file jar, kita akan menggunakan perintah jar .

Untuk menggunakan perintah jar untuk membuat file jar, kita perlu menggunakan opsi c untuk menunjukkan bahwa kita sedang membuat file dan opsi f untuk menentukan file:

jar cf JarExample.jar com/baeldung/jar/*.class

3.2. Mengatur Kelas Utama

Ini berguna untuk manifes file jar untuk menyertakan kelas utama.

Manifes adalah file khusus dalam jar yang terletak di direktori META-INF dan bernama MANIFEST.MF . File manifes berisi informasi meta khusus tentang file di dalam file jar.

Beberapa contoh dari apa yang dapat kita gunakan untuk file manifes termasuk pengaturan titik masuk, pengaturan informasi versi dan konfigurasi jalur kelas.

Dengan menggunakan opsi e , kita dapat menentukan titik masuk kita, dan perintah jar akan menambahkannya ke file manifes yang dihasilkan.

Mari kita jalankan jar dengan titik masuk yang ditentukan:

jar cfe JarExample.jar com.baeldung.jar.JarExample com/baeldung/jar/*.class

3.3. Memperbarui Isi

Katakanlah kita telah membuat perubahan pada salah satu kelas kita dan mengkompilasinya kembali. Sekarang, kita perlu memperbarui file jar kita.

Mari gunakan perintah jar dengan opsi u untuk memperbarui isinya:

jar uf JarExample.jar com/baeldung/jar/JarExample.class

3.4. Mengatur File Manifes

Dalam beberapa kasus, kita mungkin perlu lebih mengontrol apa yang ada di file manifes kita. The jar perintah menyediakan fungsionalitas untuk memberikan informasi manifest kita sendiri.

Mari tambahkan file manifest parsial bernama example_manifest.txt ke aplikasi kita untuk mengatur titik masuk kita:

Main-Class: com.baeldung.jar.JarExample

Informasi manifes yang kami sediakan kami akan ditambahkan ke apa yang dihasilkan oleh perintah jar, jadi itu satu-satunya baris yang kami butuhkan di file.

Penting bagi kami untuk mengakhiri file manifes dengan baris baru . Tanpa baris baru, file manifes kita akan diabaikan secara diam-diam.

Dengan pengaturan itu, mari buat toples lagi menggunakan informasi manifes dan opsi m :

jar cfm JarExample.jar com/baeldung/jar/example_manifest.txt com/baeldung/jar/*.class

3.5. Output Verbose

Jika kita ingin informasi lebih lanjut dari perintah jar , kita cukup menambahkan opsi v untuk verbose.

Mari jalankan perintah jar kita dengan opsi v :

jar cvfm JarExample.jar com/baeldung/jar/example_manifest.txt com/baeldung/jar/*.class added manifest adding: com/baeldung/jar/JarExample.class(in = 453) (out= 312)(deflated 31%)

4. Menggunakan Maven

4.1. Konfigurasi Default

Kita juga bisa menggunakan Maven untuk membuat toples kita. Karena Maven lebih menyukai konvensi daripada konfigurasi, kita dapat menjalankan paket untuk membuat file jar kita.

mvn package

Secara default, file jar kami akan ditambahkan ke folder target dalam proyek kami.

4.2. Menunjukkan Kelas Utama

Kita juga dapat mengkonfigurasi Maven untuk menentukan kelas utama dan membuat file jar yang dapat dieksekusi.

 org.apache.maven.plugins maven-jar-plugin ${maven-jar-plugin.version}    com.baeldung.jar.JarExample    

5. Menggunakan Spring Boot

5.1. Menggunakan Maven dan Default

If we're using Spring Boot with Maven, we should first confirm that our packaging setting is set to jar rather than war in our pom.xml file.

4.0.0 spring-boot jar spring-boot

Once we know that's configured, we can run the package goal:

mvn package

5.2. Setting the Entry Point

Setting our main class is where we find differences between creating a jar with a regular Java application and a fat jar for a Spring Boot application. In a Spring Boot application, the main class is actually org.springframework.boot.loader.JarLauncher.

Although our example isn't a Spring Boot application, we could easily set it up to be a Spring Boot console application.

Our main class should be specified as the start class:

 com.baeldung.jar.JarExample  

We can also use Gradle to create a Spring Boot fat jar.

6. Running the Jar

Now that we've got our jar file, we can run it. We run jar files using the java command.

6.1. Inferring the Main Class

Since we've gone ahead and made sure our main class is specified in the manifest, we can use the -jar option of the java command to run our application without specifying the main class:

java -jar JarExample.jar

6.2. Specifying the Main Class

We can also specify the main class when we're running our application. We can use the -cp option to ensure that our jar file is in the classpath and then provide our main class in the package.className format:

java -cp JarExample.jar com.baeldung.jar.JarExample

Using path separators instead of package format also works:

java -cp JarExample.jar com/baeldung/jar/JarExample

6.3. Listing the Contents of a Jar

We can use the jar command to list the contents of our jar file:

jar tf JarExample.jar META-INF/ META-INF/MANIFEST.MF com/baeldung/jar/JarExample.class

6.4. Viewing the Manifest File

Since it can be important to know what's in our MANIFEST.MF file, let's look at a quick and easy way we can peek at the contents without leaving the command line.

Let's use the unzip command with the -p option:

unzip -p JarExample.jar META-INF/MANIFEST.MF Manifest-Version: 1.0 Created-By: 1.8.0_31 (Oracle Corporation) Main-Class: com.baeldung.jar.JarExample

7. Conclusion

In this tutorial, we set up a simple Java application with a main class.

Then we looked at three ways of creating jar files: using the jar command, with Maven and with a Maven Spring Boot application.

Setelah kami membuat file jar kami, kami kembali ke baris perintah dan menjalankannya dengan kelas utama yang disimpulkan dan ditentukan.

Kami juga belajar cara menampilkan konten file dan cara menampilkan konten satu file di dalam toples.

Contoh Java biasa dan contoh Spring Boot tersedia di GitHub.