Cómo crear un archivo JAR (Java ARchive)

Comprimir y empaquetar ficheros en un archivo JAR no ejecutable

jar cfv nombre_archivo.jar archivo1 archivo2 archivo3 ...


Comando jar:

c: crea un archivo nuevo
f: especifica el nombre del archivo
v: da información detallada
u: actualiza un archivo existente
t: lista el contenido de un archivo

Comprimir y empaquetar ficheros en un archivo JAR ejecutable

Los archivos JAR contienen un manifest con información necesaria para la máquina virtual; contiene, entre otros datos, el nombre de la clase que se ejecutará al arrancar el archivo JAR. Para proporcionar esta información:

jar cmfv mainClass.txt nombre_archivo.jar *.class


Se crea un archivo de texto (llamado, por ejemplo, mainClass.txt) con 2 líneas:

– una primera línea con el texto (sin comillas) “Main-Class: clase_principal” (clase_principal es el nombre de la clase principal sin extensión class)

– una segunda línea en blanco (¡sin ella no funciona!)

Ejecutar un archivo JAR

java -jar nombre_archivo.jar


Cómo leer una imagen empaquetada en el archivo JAR

Para leer un archivo GIF o JPG empaquetado en un archivo JAR se puede usar este código:

/* para poder usar la clase URL hay que importar el paquete java.net.URL */
 URL url = this.getClass().getResource( "carpeta/archivo.jpg" );

Una vez obtenida la URL, se accede a la imagen de varias maneras:

// 1
Image imagen = component.getToolKit()getImage(url);
// 2
Image imagen = Toolkit.getDefaultToolKit()getImage(url);
// 3
JLabel label = new JLabel();
label.setIcon (new ImageIcon ( url ));

Dependiendo del sitio en que getResource encuentra la imagen, la cadena devuelta URL presenta diferentes aspectos:

  • imagen en un archivo JAR del disco local:
  • imagen en un archivo JAR del servidor
  • imagen en un archivo del disco local:
jar:file:C:/ruta_absoluta_al_archivo_jar.jar!/imagen.jpg //JAR local
jar:http://www.dominio.com/archivo.jar!/imagen.jpg //JAR en red
file:C:/ruta_absoluta_a_imagen.jpg //imagen local