Crear un fichero JAR

El comando de la herramienta Jar

El formato básico del comando para crear un fichero JAR es:
jar cf fichero-jar fichero(s)-de entrada
Echemos un vistazo a las opciones y argumentos utilizados en este comando:

Las opciones c y f pueden aparecer en cualquier orden, pero no debe existir ningún espacio entre ellas.

Este comando generará un fichero JAR comprimido y lo situará en el directorio actual. El comando también generá un fichero de manifiesto, por defecto. META-INF/MANIFEST.MF, para el archivo JAR.

Podrías añadir cualquiera de estas opciones adicionales a las opciones cf del comando básico:

En la versión 1.1 el formato JAR sólo soporta nombres de ficherso ASCII. La versión 1.2 añade soporte para nombres codificados en UTF8.

Un ejemplo

Veamos un ejemplo. El JDKTM incluye una demo del applet TicTacToe. Esta demo contiene ficheros de clases, ficheros de audio e imágenes, todos almacenados en un directorio llamado TicTacToe que tiene esta estructura:
                      TicTacToe
             _____________|______________ 
            |             |              |
      TicTacToe.class   audio         images
                          |              |
Los subdirectorios audio e images contienen ficheros GIF y de sonido utilizados por el applet.

Para empaquetar esta demo en un sólo fichero JAR llamado TicTacToe.jar, deberías ejecutar este comando desde el directorio TicTacToe:

jar cvf TicTacToe.jar TicTacToe.class audio images
Los argumentos audio e images representan directorios, por eso la herramienta JAR los situará recursivamente a ellos y sus contenidos en el fichero JAR. El fichero JAR generado TicTacToe.jar estará situado en el directorio TicTacToe. Como el comando utiliza la opción v para salida verbosa, podrás ver esta salida:
adding: TicTacToe.class (in=3825) (out=2222) (deflated 41%)
adding: audio/ (in=0) (out=0) (stored 0%)
adding: audio/beep.au (in=4032) (out=3572) (deflated 11%)
adding: audio/ding.au (in=2566) (out=2055) (deflated 19%)
adding: audio/return.au (in=6558) (out=4401) (deflated 32%)
adding: audio/yahoo1.au (in=7834) (out=6985) (deflated 10%)
adding: audio/yahoo2.au (in=7463) (out=4607) (deflated 38%)
adding: images/ (in=0) (out=0) (stored 0%)
adding: images/cross.gif (in=157) (out=160) (deflated -1%)
adding: images/not.gif (in=158) (out=161) (deflated -1%)

Puedes ver desde esta salida que el fichero JAR TicTacToe.jar está comprimido. La herramienta JAR comprime los ficheros por defecto. Puedes desactivar la compresión utilizando la opción 0 (cero), con lo que el comando se parecería a esto:

jar cvf0 TicTacToe.jar TicTacToe.class audio images

Podrías querer evitar la compresión, por ejemplo, para incrementar la velocidad a la que el fichero JAR podría ser cargado por un navegador. Los ficheros JAR sin comprimir generalmente pueden cargarse más rápido que los comprimidos porque no necesitan descomprimir los ficheros durante la descarga.

La herramienta JAR aceptará argumentos que utilicen el síbolo de comodín *. Como no existen ficheros en el directorio TicTacToe que no se quieran añadir, podrías utilizar este comando alternativo para construir el fichero JAR:

jar cvf TicTacToe.jar *

Una nota final: aunque la salida verbosa no lo indique, la herramienta Jar añade automáticamente un fichero de manifiesto al archivo JAR en la localización META-INF/MANIFEST.MF.


Ozito