Panduan Membuat dan Menjalankan Fail Jar di Java

1. Gambaran keseluruhan

Biasanya, lebih mudah untuk menggabungkan banyak fail kelas Java ke dalam satu fail arkib.

Dalam tutorial ini, kita akan membahas selok-belok bekerja dengan fail jar - atau J ava AR chive - di Java.

Secara khusus, kami akan menggunakan aplikasi mudah dan meneroka pelbagai cara untuk mengemas dan menjalankannya sebagai balang. Kami juga akan menjawab beberapa rasa ingin tahu seperti cara membaca fail manifes balang dengan mudah .

2. Penyediaan Program Java

Sebelum kita dapat membuat fail jar yang dapat dijalankan, aplikasi kita perlu mempunyai kelas dengan kaedah utama . Kelas ini menyediakan tempat masuk kami ke dalam aplikasi:

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

3. Perintah Jar

Sekarang kita semua sudah siap, mari kumpulkan kod kami dan buat fail balang kami.

Kita boleh melakukan ini dengan javac dari baris arahan:

javac com/baeldung/jar/*.java

The javac arahan mewujudkan JarExample.class dalam com / baeldung / jar direktori. Kita sekarang boleh memasukkannya ke dalam fail balang.

3.1. Menggunakan Lalai

Untuk membuat fail jar, kita akan menggunakan perintah jar .

Untuk menggunakan perintah jar untuk membuat fail jar, kita perlu menggunakan pilihan c untuk menunjukkan bahawa kita membuat fail dan pilihan f untuk menentukan file:

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

3.2. Menetapkan Kelas Utama

Sangat berguna untuk manifes fail jar untuk memasukkan kelas utama.

Manifes adalah fail khas dalam balang yang terletak di direktori META-INF dan diberi nama MANIFEST.MF . Fail manifes mengandungi maklumat meta khas mengenai fail dalam fail jar.

Beberapa contoh yang dapat kita gunakan untuk menggunakan file manifes termasuk menetapkan titik masuk, menetapkan maklumat versi dan mengkonfigurasi jalan kelas.

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

Mari jalankan balang dengan titik masuk yang ditentukan:

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

3.3. Mengemas kini Kandungan

Katakanlah kami telah membuat perubahan pada salah satu kelas kami dan mengumpulkannya semula. Sekarang, kita perlu mengemas kini fail balang kita.

Mari gunakan perintah jar dengan pilihan u untuk mengemas kini kandungannya:

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

3.4. Menetapkan Fail Manifest

Dalam beberapa kes, kita mungkin perlu mempunyai lebih banyak kawalan terhadap apa yang terdapat dalam fail manifes kita. The jar arahan menyediakan fungsi untuk menyediakan maklumat yang nyata kita sendiri.

Mari tambahkan fail manifes separa bernama example_manifest.txt ke aplikasi kami untuk menetapkan titik masuk kami:

Main-Class: com.baeldung.jar.JarExample

Maklumat manifes yang kami berikan akan kami tambahkan pada apa yang dihasilkan oleh perintah jar, jadi ini adalah satu-satunya baris yang kami perlukan dalam fail.

Penting untuk mengakhiri fail manifes kami dengan baris baru . Tanpa garis baru, fail manifes kami akan diabaikan secara senyap.

With that setup, let's create our jar again using our manifest information and the m option:

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

3.5. Verbose Output

If we want more information out of the jar command, we can simply add the v option for verbose.

Let's run our jar command with the v option:

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. Using Maven

4.1. Default Configuration

We can also use Maven to create our jar. Since Maven favors convention over configuration, we can just run package to create our jar file.

mvn package

By default, our jar file will be added to the target folder in our project.

4.2. Indicating the Main Class

We can also configure Maven to specify the main class and create an executable jar file.

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

5. Using Spring Boot

5.1. Using Maven and Defaults

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 membuat fail jar kami, kami kembali ke baris arahan dan menjalankannya dengan kelas utama yang disimpulkan dan ditentukan.

Kami juga mempelajari cara memaparkan kandungan fail dan cara memaparkan kandungan satu fail dalam balang.

Contoh Java biasa dan contoh Spring Boot boleh didapati di GitHub.