domingo, 3 de febrero de 2013

Cómo Crear un Jar con Java desde la Consola (cmd) en Windows (Todas las Versiones)

Cómo Crear un Jar con Java desde la Consola (cmd) en Windows (Todas las Versiones)


Esta publicación es una continuación de la Entrada "Cómo Ejecutar Java desde la Consola (cmd) en Windows (Todas las Versiones)", hoy veremos como crear un archivo con extensión Jar a partir de la línea de comandos, es decir sin depender de los IDEs más conocidos como Netbeans o Eclipse.

Para crear los archivos .jar debemos primero crear un Archivo de Manifiesto  en el cual se deberá poner el nombre de la clase que contenga el método main, este archivo en Windows puede ser creado a partir del Bloc de Notas, entonces abrimos el Notepad (Bloc de Notas) y escribimos lo siguiente:

Main-Class: HolaMundo
Sealed: true

*Nótese que no se agrega el .class y que la palabra MAIN-CLASS: es obligatoria.

Donde HolaMundo es el Nombre de la Clase que tiene mi método main, una vez escrito eso lo guardamos con el siguiente nombre en el mismo lugar donde tenemos nuestros archivos .java y .class:

temp.mf

Ahora que tenemos todo listo para construir el .jar vamos a la línea de comandos (CMD) y ejecutamos la siguiente sentencia:

jar -cf HolaMundo.jar HolaMundo.class


Después de haber ejecutado la sentencia anterior ya tendremos el archivo HolaMundo.jar en nuestro directorio, y contendrá el fichero de manifiesto, la clase o clases que tenga nuestro proyecto, ahora al archivo .jar que tenemos, vamos a modificarlo para indicarle que archivo de manifiesto debe usar, esto con la siguiente sentencia:

jar cmf temp.mf HolaMundo.jar HolaMundo.class

Se permiten comodines (por ejemplo, para incluir todos los archivos class de la carpeta o que cumplan con alguna condición dada):
  • jar cmf temp.mf HolaMundo.jar fichero$.class
  • jar cmf temp.mf HolaMundo.jar *.class
Y finalmente ejecutamos nuestro archivo en la línea de comandos con la siguiente llamada:
java -jar HolaMundo.jar

Les adjunto una captura de todos los pasos antes mencionados al final del post, para que tengan una mejor idea del Proceso llevado a cabo, les recuerdo que solo empezamos con los archivos:

  • HolaMundo.java
  • temp.mf
Y a partir de la ejecución de los comandos terminamos con los siguientes archivos:

  • HolaMundo.java
  • temp.mf
  • HolaMundo.class
  • HolaMundo.jar

Cualquier duda la pueden hacer en los comentarios.

Crear un Jar desde la Consola (CMD)

13 comentarios:

  1. Muchas gracias, me salió a la perfección!!!

    ResponderEliminar
  2. todo me salió bien. Pero la ejecuto desde mi sistema, es decir, doble clic sobre el Jar y no me ejecuta nada. Que hago?

    ResponderEliminar
    Respuestas
    1. Eso sucede cuando tu aplicación se ejecuta a través de consola, para eso tienes que desde el cmd llamar al archivo Jar y ejecutarlo con los parámetros de tu programa.

      Eliminar
    2. Hola al ejecutarlo paso a paso en la ultima parte de la imagen en esta instruccion

      java -jar HolaMundo.jar

      me aparece:

      no hay ning·n atributo de manifiesto principal en HolaMundo.jar

      hice todos los archivos y los pasos al correrlo en consola si funciona pero, asi como te aparece en la imagen en la parte final del jar no me sale el "hola mundo", me podrias ayudar?
      Gracias

      Eliminar
  3. Hola Antag, ese error sale si existe algún problema con el archivo de manifiesto es decir: temp.mf

    Verifica el contenido del mismo, si lo estas pasando todo correctamente y nos cuentas qué mismo pasó.

    Saludos y gracias por comentar. =)

    ResponderEliminar
  4. Respuestas
    1. Gracias por comentar Javier, espero que te haya servido. =)

      Saludos!!

      Eliminar
  5. Hola! lo que sucede es que cuando ejecuto la sentencia "jar cmf temp.mf HolaMundo.jar HolaMundo.class" Me arroja un error en la linea de comando que dice así: "java.io.IOException invalid manifiest format" . Quedo atento a cualquier recomendacion, muchas gracias y buen post!!

    ResponderEliminar
    Respuestas
    1. Hola José, eso significa que hay un error de sintaxis en el archivo del manifiesto, revisa bien todo a detalle, tal como lo indica el post, así deberá funcionarte.

      Saludos!

      Eliminar
  6. ¡Hola! Disculpa. ¿Cómo puedo integrar archivos que sirven como recursos en mi proyecto al .jar? Como archivos del tipo .jpg, .png y .wav. ¿Debo tenerlos dentro del mismo fichero en el que se ubica el .java y el .class? ¿O puedo tenerlos en una carpeta a parte dentro de ese fichero?

    ResponderEliminar
    Respuestas
    1. Hola Rosana,

      Los archivos que sirvan para tu proyecto pueden estar donde sea con tal que hagas la referencia correcta a los mismos, te aconsejo que dentro del proyecto crees una carpeta con los mismos para que estén organizados de mejor manera.

      Saludos!

      Eliminar
  7. ¡Hola! Disculpa. ¿Cómo puedo integrar archivos que sirven como recursos en mi proyecto al .jar? Como archivos del tipo .jpg, .png y .wav. ¿Debo tenerlos dentro del mismo fichero en el que se ubica el .java y el .class? ¿O puedo tenerlos en una carpeta a parte dentro de ese fichero?

    ResponderEliminar
    Respuestas
    1. Hola Rosana,

      Los archivos que sirvan para tu proyecto pueden estar donde sea con tal que hagas la referencia correcta a los mismos, te aconsejo que dentro del proyecto crees una carpeta con los mismos para que estén organizados de mejor manera.

      Saludos!

      Eliminar