Update JAR "jar -u" Command Syntax

Q

What are syntax rules of the "jar -u" command for updating a JAR file? I am confused on how to specify different options, like v and f.

✍: FYIcenter.com

A

The "jar -u" command allows you to update an existing JAR file. It has the follow syntax:

jar -u[vfme0] [jar-file] [manifest-file] [entry-point] [list]

"v" option flag returns verbose information on standard output for each entry added to the existing JAR. If "v" is not specified, nothing shows up on the standard output.

"f" option flag specifies the existing JAR file. If "f" is specified, "jar-file" must be provided. If "f" is not specified, the exiting JAR file is read from standard input, and the updated JAR file is written to the standard output.

"m" option flag specifies the manifest file to be merged into the JAR. If "m" is specified, "manifest-file" must be provided.

"e" option flag specifies that the given main class to be used to update in the manifest to make the new JAR executable. If "e" is specified, "entry-point" must be provided.

"0" option flag specifies that new entries to be added with no compression.

"list" must be provided to specify a list of files to be used to update the JAR. If an entry in the "list" is a folder, all files in that folder will be added. If "-C dir entry" appears in the list, the "jar" command will change to the given directory (folder) first before process the entry.

Here are some example of valid "jar -u" commands

   jar -uf my.jar Hello.class
      Update JAR with one class in the current folder

   type old.jar | jar -u Hello.java > new.jar
      Read the old JAR from standard input 
      and write the new JAR to standard output

   jar -uf my.jar -C classes . -C bin xyz.class
      Update JAR with all files in the "classes" folder 
      and one class from another folder.
   
   jar -ufm my.jar my.mf Hello.class
      Update JAR with one class and merge the manifest file

   jar -ufe my.jar Hello
      Update JAR with the main class to make it executable

Back to FAQ for JDK JAR (Java ARchive) Tool.

2016-05-15, 1051👍, 0💬