Modifying a Manifest File
You use the m command-line option to add custom information to the manifest during creation of a JAR file. This section describes the m option. The Jar tool automatically puts a default manifest with the pathname META-INF/MANIFEST.MF into any JAR file you create. You can enable special JAR file functionality, such as package sealing, by modifying the default manifest. Typically, modifying the default manifest involves adding special-purpose headers to the manifest that allow the JAR file to perform a particular desired function.
To modify the manifest, you must first prepare a text file containing the information you wish to add to the manifest. You then use the Jar tool's m option to add the information in your file to the manifest.
Warning: The text file from which you are creating the manifest must end with a new line or carriage return. The last line will not be parsed properly if it does not end with a new line or carriage return.
The basic command has this format:
Let's look at the options and arguments used in this command:
Note: The contents of the manifest must be encoded in UTF8.
The remaining sections of this lesson demonstrate specific modifications you may want to make to the manifest file.
If you have an application bundled in a JAR file, you need some way to indicate which class within the JAR file is your application's entry point. You provide this information with the
The value
After you have set the
The
We first create a text file named
Warning: The text file must end with a new line or carriage return. The last line will not be parsed properly if it does not end with a new line or carriage return.
We then create a JAR file named
This creates the JAR file with a manifest with the following contents:
When you run the JAR file with the following command, the
To modify the manifest, you must first prepare a text file containing the information you wish to add to the manifest. You then use the Jar tool's m option to add the information in your file to the manifest.
Warning: The text file from which you are creating the manifest must end with a new line or carriage return. The last line will not be parsed properly if it does not end with a new line or carriage return.
Let's look at the options and arguments used in this command:
- The c option indicates that you want to create a JAR file.
- The m option indicates that you want to merge information from an existing file into the manifest file of the JAR file you're creating.
- The f option indicates that you want the output to go to a file (the JAR file you're creating) rather than to standard output.
- manifest-addition is the name (or path and name) of the existing text file whose contents you want to add to the contents of JAR file's manifest.
- jar-file is the name that you want the resulting JAR file to have.
- The input-file(s) argument is a space-separated list of one or more files that you want to be placed in your JAR file.
Note: The contents of the manifest must be encoded in UTF8.
Setting an Application's Entry Point
Main-Class
header in the manifest, which has the general form: Main-Class: classname
classname
is the name of the class that is your application's entry point. Recall that the entry point is a class having a method with signature public static void main(String[] args)
. After you have set the
Main-Class
header in the manifest, you then run the JAR file using the following form of the java
command: java -jar JAR-name
main
method of the class specified in the Main-Class
header is executed. An Example
We want to execute themain
method in the class MyClass
in the package MyPackage
when we run the JAR file. We first create a text file named
Manifest.txt
with the following contents: Main-Class: MyPackage.MyClass
Warning: The text file must end with a new line or carriage return. The last line will not be parsed properly if it does not end with a new line or carriage return.
MyJar.jar
by entering the following command: jar cfm MyJar.jar Manifest.txt MyPackage/*.class
Manifest-Version: 1.0 Created-By: 1.6.0 (Sun Microsystems Inc.) Main-Class: MyPackage.MyClass
main
method of MyClass
executes: java -jar MyJar.jar
No comments:
Post a Comment