ADC Home > Reference Library > Reference > Mac OS X > Mac OS X Man Pages

 

This document is a Mac OS X manual page. Manual pages are a command-line technology for providing documentation. You can view these manual pages locally using the man(1) command. These manual pages come from many different sources, and thus, have a variety of writing styles.

This manual page is associated with the Mac OS X developer tools. The software or headers described may not be present on your Mac OS X installation until you install the developer tools package. This package is available on your Mac OS X installation DVD, and the latest versions can be downloaded from developer.apple.com.

For more information about the manual page format, see the manual page for manpages(5).



pack200(1)                                                                                        pack200(1)



NAME
       pack200 - JAR Packing tool

SYNOPSIS
       pack200 [ OPTIONS ] output-file JAR-file

PARAMETERS
       The  options  may be in any order. The last option on the command line or in a properties file super-sedes supersedes
       sedes all previously specified options. For a discussion of the options, see OPTIONS below.

       OPTIONS        see OPTIONS below.

       output-file    name of the output file.

       JAR-file       name of the input file.

DESCRIPTION
       The pack200 tool is a Java application that transforms a JAR file  into  a  compressed  pack200  file
       using  the  Java gzip compressor.  The compressed packed files are highly compressed JARs that can be
       directly deployed, saving bandwidth and reducing download time.

       The pack200 tool uses several options to fine-tune and set the compression engine.

       Typical usage:

       % pack200 myarchive.pack.gz myarchive.jar

       In this example, the myarchive.pack.gz is produced, using the default pack200 and gzip settings.

   OPTIONS
       -r --repack
              Produces a JAR file by packing the file myarchive.jar, and unpacking it.  The  resulting  file
              can be used as an input to the jarsigner(1) tool.

              % pack200 --repack myarchive-packed.jar myarchive.jar
              % pack200 --repack myarchive.jar

       -g --no-gzip
              Produces  a  pack200 file. With this option a suitable compressor must be used, and the target
              system must also use a corresponding decompressor.

              % pack200 --no-gzip myarchive.pack myarchive.jar

       -G --strip-debug
              Strips the attributes used for debugging, from the output. These include SourceFile,  LineNum-berTable, LineNumberTable,
              berTable,  LocalVariableTable  and  LocalVariableTypeTable.  Removing these attributes reduces
              the size of both downloads and installations but reduces the usefulness of debuggers.

       -O --no-keep-file-order
              The packer will reorder and transmit all elements. Additionally, the  packer  may  remove  JAR
              directory  names.  This will reduce the download size; however, certain JAR file optimizations
              such as indexing, may not work correctly.

       -Svalue --segment-limit=value
              The value is the estimated target size N (in bytes) of each archive segment. If a single input
              file  requires more than N bytes, it will be given its own archive segment. As a special case,
              a value of -1 will produce a single large segment with all input files, while  a  value  of  0
              will  produce one segment for each class. Larger archive segments result in less fragmentation
              and better compression, but processing them requires more memory.

              The size of each segment is estimated by counting the size of each input file to be  transmit-ted transmitted
              ted in the segment, along with the size of its name and other transmitted properties.

              The  default  is 1000000 (a million bytes). This allows input JAR files of moderate size to be
              transmitted in one segment. It also puts a  limit  on  memory  requirements  for  packers  and
              unpackers.

              A 10MB JAR packed without this limit will typically pack about 10% smaller, but the packer may
              require a larger Java heap (about ten times the segment limit).

       -Evalue --effort=value
              If the value is set to a single decimal digit, the packer will use  the  indicated  amount  of
              effort  in  compressing  the archive. Level 1 may produce somewhat larger size and faster com-pression compression
              pression speed, while level 9 will take much longer but may produce better  compression.   The
              special  value  0 instructs the packer to copy through the original JAR file directly, with no
              compression. The JSR 200 standard requires any unpacker to understand this special case  as  a
              pass-through of the entire archive.

              The default is 5, investing a modest amount of time to produce reasonable compression.

       -Hvalue --deflate-hint=value
              Overrides  the  default,  which preserves the input information, but may cause the transmitted
              archive to be larger.

              The possible values are:

              true

              false
                    In either case, the packer will set the deflation hint accordingly  in  the  output  ar-chive, archive,
                    chive, and will not transmit the individual deflation hints of archive elements.
              keep
                    Preserve deflation hints observed in the input JAR.  (This is the default.)

       -mvalue --modification-time=value
              The possible values are:

              latest
                    The  packer will attempt to determine the latest modification time, among all the avail-able available
                    able entries in the original archive, or the latest modification time of all the  avail-able available
                    able  entries in that segment. This single value will be transmitted as part of the seg-ment segment
                    ment and applied to all the entries in each segment. This can  marginally  decrease  the
                    transmitted  size of the archive at the expense of setting all installed files to a sin-gle single
                    gle date.
              keep
                    Preserve modification times observed in the input JAR.  (This is the default.)

       -Pfile -pass-file=file
              Indicates that a file should be passed through byte-wise with no compression. By repeating the
              option,  multiple  files  may be specified,.  There is no pathname transformation, except that
              the system file separator is replaced by the JAR file separator '/'. The resulting file  names
              must  match  exactly as strings with their occurrences in the JAR file. If file is a directory
              name, all files under that directory will be passed.

       -Uaction --unknown-attribute=action
              Overrides the default behavior, ie. the classfile containing the  unknown  attribute  will  be
              passed through with the specified action.

              The possible values for actions are:

              error:
                    The pack200 operation as a whole will fail, with a suitable explanation.
              strip:
                    The attribute will be dropped. Note: removing the VM required attributes may cause Class
                    Loader failures.
              pass:
                    Upon encountering this attribute, the entire class will be transmitted as though it is a
                    resource.  (This is the default.)

       -Cattribute-name=layout --class-attribute=attribute-name=action
       -Fattribute-name=layout --field-attribute=attribute-name=action
       -Mattribute-name=layout --method-attribute=attribute-name=action
       -Dattribute-name=layout --code-attribute=attribute-name=action
               With  the  above four options, the attribute layout can be specified for a class entity, such
               as Class attribute, Field attribute, Method attribute and Code attribute. The  attribute-name
               is the name of the attribute for which the layout or action is being defined.

               The possible values for action are:

               (some layout string)
                    The  layout  language  is  defined  in  the JSR 200 specification.  For example --class-attribute=SourceFile=RUH. --classattribute=SourceFile=RUH.
                    attribute=SourceFile=RUH.
               error
                    upon encountering this attribute, the pack200  operation  will  fail,  with  a  suitable
                    explanation.
               strip
                    upon  encountering  this attribute, the attribute will be removed from the output. Note:
                    removing the VM required attributes may cause Class Loader failures.
               pass
                    upon encountering this attribute, the entire class will be transmitted as though it is a
                    resource.

                    Example --class-attribute=CompilationID=pass,  will  cause the classfile containing this
                    attribute to be passed through, without further action by the packer.

       -fpack.properties --config-file=pack.properties
              A configuration file, containing Java properties to initialize the packer, may be specified on
              the command line.

              % pack200 -f pack.properties myarchive.pack.gz myarchive.jar
              % cat pack.properties
              # Generic properties for the packer.
              modification.time=latest
              deflate.hint=false
              keep.file.order=false
              # This option will cause the files bearing new attributes to
              # be reported as an error rather than passed uncompressed.
              unknown.attribute=error
              # Change the segment limit to be unlimited.
              segment.limit=-1


       Non-Standard Options

       -v --verbose        Outputs  minimal messages, multiple specification of this option will output more
                           verbose messages.


       -q --quiet          Quiet operation with no messages.


       -lfilename --log-file=filename
                           A log file to output messages.


       -Joption            Passes option to the Java launcher  called   by   pack200.   For   example,   -J-Xms48m -JXms48m
                           Xms48m  sets  the startup memory to 48 megabytes. Although it does not begin with
                           -X,  it  is not  a  `standard  option'  of  pack200.  It is a  common  convention
                           for  -J  to  pass  options to the underlying VM executing applications written in
                           Java.


   EXIT STATUS
       The following exit values are returned:

       0   Successful completion.

       >0  An error occurred.


SEE ALSO
       unpack200(1), jar(1), jarsigner(1), attributes(5)


       For API specification and other related information:
              http://java.sun.com/j2se/5.0/docs
              http://java.sun.com/j2se/5.0/docs/guide/deployment/deployment-guide/pack200.html


NOTES:
       This command should not be confused with pack(1). They are distinctly separate products.

       The J2SE API Specification provided with the JDK release is the superseding
              authority, in case of discrepancies.



                                                14 July 2004                                      pack200(1)

Did this document help you?
Yes: Tell us what works for you.
It’s good, but: Report typos, inaccuracies, and so forth.
It wasn’t helpful: Tell us what would have helped.