In Java, you can use manifest file to define application’s entry point, adding classpath or package version for a JAR file. In this short tutorial , we will show you how to add a custom manifest file into a Jar file.

1. Project Structure

Assume this is your project folder structure

/workspace/test/classes/com/favtuts/awt/AwtExample.class
/workspace/test/classes/manifest.txt

2. Jar It

Use below command to create a Jar file and add your custom manifest file (manifest.txt) into it.

jar -cvfm example.jar manifest.txt com/favtuts/awt/*.class

Output

$ jar -cvfm example.jar manifest.txt com/favtuts/awt/*.class
added manifest
adding: com/favtuts/awt/AwtExample$1.class(in = 638) (out= 388)(deflated 39%)
adding: com/favtuts/awt/AwtExample.class(in = 879) (out= 540)(deflated 38%)
favtuts@laptop:~/workspace/JavaTips/bin$ 

3. Done

A new “example.jar” jar file with a custom manifest file.

$ jar tf example.jar 
META-INF/
META-INF/MANIFEST.MF
com/favtuts/awt/AwtExample$1.class
com/favtuts/awt/AwtExample.class
favtuts@laptop:~/workspace/JavaTips/bin$ 

Explanation

option “m” is means include your custom manifest file. You should always careful about the order of the options, the letters “m” and “f” must appear in the same order that “manifest” and “jarfile” appear.

For example,
Correct statement
“fm” should match with “example.jar manifest.txt”

 jar -cvfm example.jar manifest.txt com/favtuts/awt/*.class

“mf” should match with “manifest.txt example.jar”

jar -cvmf manifest.txt example.jar com/favtuts/awt/*.class

Wrong statement

jar -cvfm manifest.txt example.jar com/favtuts/awt/*.class

This will not work, system treats your manifest file is “example.jar”, and causing “invalid header field” error.

Reference

  1. Manifest file reference guide

Leave a Reply

Your email address will not be published. Required fields are marked *