Este artículo lo voy a dejar colgado por que me ha surgido la necesidad de utilizar Java para poder ejecutar una de mis «cosillas» en Gnu/Linux. Para lanzar una aplicación escrita con este lenguaje necesito de un archivo .JAR (Java ARchive). Se trata de un formato de archivo independiente de la plataforma que se utiliza para agregar muchos archivos de clase Java y metadatos y recursos asociados, como texto, imágenes, etc, en un único archivo para su distribución. Pues una vez realizado lo que necesitaba, me he decidido a publicar aquí una sencilla forma de cómo crear estos archivos desde la terminal de cualquier distribución Gnu/Linux.
En este artículo, mostraremos cómo crear una aplicación Java simple y agruparla en un archivo .JAR, y cómo ejecutar el archivo .jar creado desde la terminal. Estos archivos permiten que los tiempos de ejecución de Java implementen de manera eficiente una aplicación completa en un solo archivo. Proporciona muchos beneficios, como seguridad, sus elementos pueden comprimirse, acortar los tiempos de descarga, permite el sellado y el control de versiones del paquete y además admite la portabilidad. También admite empaques para extensiones.
Para hacer esto, debemos tener la herramienta de línea de comandos Java instalada para poder lanzar una aplicación Javay el indicador -jar para ejecutar un programa encapsulado en un archivo JAR. Cuando se usa este indicador, el archivo JAR especificado es el origen de todas las clases de usuario.
Cómo crear un archivo .JAR en Gnu/Linux
1. Primero comenzaremos escribiendo una clase Java simple. Incluirá un método principal para una aplicación llamada entreunosyceros. Solo busca fines de demostrativos, complicarlo más ya es cosa de cada usuario. Comenzamos abriendo una terminal (Ctrl+Alt+T) y escribimos:
vim entreunosyceros.java
Dentro del archivo vamos a copiar y pegar el siguiente código en el archivo entreunosyceros.java.
public class entreunosyceros { public static void main(String[] args){ System.out.println(" Ejecutando un archivo .java en Gnu/Linux "); } }
Una vez pegado, guardaremos el archivo y lo cerraremos.
2. Llegados hasta aquí necesitamos compilar y empaquetar la clase en un archivo JAR. Para eso usaremos las utilidades javac y jar en la terminal, como se muestra a continuación.
javac -d . entreunosyceros.java ls jar cvf entreunosyceros.jar entreunosyceros.class ls
3. Una vez creado entreunosyceros.jar, ahora ya podemos ejecutar el archivo usando el comando java como se muestra.
java -jar entreunosyceros.jar
A partir de la salida del comando anterior, encontramos un error. La JVM (Java Virtual Machine) no pudo encontrar nuestro atributo manifiesto principal. Por esta razón no pudo ubicar la clase principal que contiene el método principal (public static void main (String [] args)).
El archivo JAR debe tener un manifiesto que contenga una línea en el formulario Clase principal: nombre de clase que define la clase con el método principal. Sirve como punto de partida de nuestra aplicación.
4. Para corregir el error anterior, necesitaremos actualizar el archivo JAR para incluir un atributo de manifiesto junto con nuestro código. Vamos a crear un archivo MANIFEST.MF. En la terminal escribimos:
vim MANIFEST.MF
Copia y pega la siguiente líneas en el archivo MANIFEST.MF.
Main-Class: entreunosyceros
Guardamos y cerramos el archivo. Ahora vamos a agregar el archivo MANIFEST.MF a nuestro entreunosyceros.jar usando el siguiente comando:
jar cvmf MANIFEST.MF entreunosyceros.jar entreunosyceros.class
5. Finalmente, al ejecutar el archivo .JAR nuevamente, debe producirse el resultado esperado como se muestra en la salida.
java -jar entreunosyceros.jar
Para obtener más información, quien lo necesite puede consultar las páginas man de java, javac y jar.
¡Eso es todo! Solo son unas líneas generales, pero creo que ha quedado claro cómo crear una aplicación Java simple, agruparla en un archivo .JAR y cómo ejecutar este archivo desde la terminal. Si necesitas más información no dudes en visitar la página de Oracle.