Crear JAR ejecutable que contenga todo lo necesario en Eclipse

Llevaba unos días “pegándome” con Eclipse para empaquetar un proyecto que tengo entre manos. Este proyecto contiene varias librerías y necesita ciertos ficheros externos jasper para generar unos informes y estaba buscando la forma de integrar todo en un fichero JAR que no necesite tener el resto de archivos y librerías de forma externa para después convertirlo en un EXE que contenga todo lo necesario.

Hoy he encontrado la solución, una solución sencilla a la par que elegante. Como ya he comentado trabajo con Eclipse y lo que he encontrado es un plugin para Eclipse llamado “Fat Jar“. Este plugin simplemente tenéis que descargarlo de aquí y descomprimirlo en la carpeta plugins de vuestro Eclipse.

A partir de ese momento cuando abras Eclipse, al pulsar con el botón derecho del ratón sobre un proyecto aparecerá una nueva opción llamada “Build Fat Jar” con un símbolo + de color verde. Al pulsar en esta opción se abrirá un asistente que te indicará los pasos a seguir para generar el JAR que contenga todo lo necesario. En mi caso, automáticamente me ha añadido las librerias, pero los jasper los he tenido que adjuntar yo.

El resultado es un JAR algo más “gordo”, pero autosuficiente.

Y para rematar, si luego queréis tener un EXE para no tener que ejecutar el comando a mano, podéis usar JSmooth, que también es muy sencillo de usar. Después de instalar JSmooth básicamente le debes indicar el JAR que quieres convertir en EXE, indicar que tipo de ejecutable quieres (en mi caso “Windowed wrapper”) , el nombre y el icono del EXE, la clase que se debe ejecutar al arrancar y pulsar en el botón de “Compilar”.

Con estos 2 sencillos programas puedes tener rápidamente un EXE creado a partir de un JAR que contenga absolutamente todo lo necesario de tu proyecto (clases, librerías, ficheros externos, etc.).

Y para rematar la faena, puedes crear (si es el caso) un instalador con la herramienta de CreateInstall, pero esto lo cuento otro día, que aún no la controlo…

12 comentarios en “Crear JAR ejecutable que contenga todo lo necesario en Eclipse

  1. Excelente Articulo!! De todas formas, como hiciste para adjuntar los jasper? agregas dentro del jar de una manera “especial”? y las imagenes, por ejemplo de botones, hay una manera de adjuntarlos en el jar que no busque la ruta original del archivo?
    Saludos y gracias por compartir tus aprendizajes!

    1. Hola Javier,
      Pues mira, para adjuntar los jasper, simplemente los añades a la carpeta “src” de tu proyecto, debe ser en esta carpeta (aunque quede feo ver todos los archivos ahí), entre otras cosas porque si los informes tienen subinformes luego tienes problemas con la ubicación. Además, si por ejemplo metieras los informes en una carpeta, por ejemplo, “src/informes”, no sé por qué pero no me funciona y debía pornerlos junto al .exe del programa en una carpeta “informes”.

      Respecto a las imagenes, mis informes no tienen y son bastante sencillos, pero imagino que si las pones también en la carpeta “src” te funcionará de la misma manera.

      Espero haberte ayudado.

      1. Guau! muchas gracias por tu respuesta! la verdad que lo probe y anduvo a la perfeccion, mostrando imagenes y reportes, pero el jar tiene que estar en una ubicacion especifica, lo saco de ahi y ya no muestra eso, pero no probe de poner todo dentro de la carpeta src, cuando lo pruebe te comento que tal me fue.
        Gracias por tu interes! saludos!

      2. Hola,
        Supongo que lo de la ubicación especifica es porque en los reportes haces referencia a rutas completas, por ejemplo, si usas una imagen que está en “c:\informes\logo.jpg” y el informe está en “c:\informes”.

        En vez de eso debes usar rutas relativas, es decir, la imagen debe apuntar a “logo.jpg”, así el jar buscará en la carpeta desde donde lo estás ejecutando. Esto mismo sirve si usas subinformes.

        Un saludo,

      3. al final con ponerlo en el mismo proyecto, con ruta relativa, lo que son imagenes anduvo bien, igual los reportes. Muchas Gracias por la ayuda!!
        Saludos!

  2. Hola, excelente aporte, aunque sigo teniendo problemas con los reportes, crees poder ayudarme te lo agradecería mucho…Saludos desde México

  3. Que tal, excelente articulo muy bueno me queda practicar.
    Pero te consulto algo, ex posible portar en el jar o aunque termine en un exe, pero portar la vm?.
    Quiero decir si por casualidad la maquina no tiene java instalado, o si pero no esta configurado y si es java mas viejo y no nos dan acceso para tocar las variables de entorno y el path, entonces necesitamos que nuestra aplicacion contenga todo, eso se puede hacer?¡

    gracias muy bueno

    1. Hola César,
      Me alegro de que de guste el artículo.
      Respecto a las dudas que planteas, hace tiempo que no hago nada en Java, pero creo recordar que no se puede meter la VM en el propio exe.
      La idea del plug-in Fat-Jar es la de meter en un jar un proyecto java, no la vm.

      Puedes leer más información en la web del proyecto:

      http://fjep.sourceforge.net/

  4. Es más sencillo de lo que parece… los pasos serían así:
    1. Click derecho sobre el proyecto de Eclipse
    2. Click en Built Fat y aparece una ventana con la siguiente información
    Jar-Name —-> Aca muestra el nombre del proyecto
    user extern Jar-Namr —–> No se chulea el check box
    Select Manifest file —–> No se chulea el check box
    Manifest: Por defecto
    Class-Path: Blanco
    merge individual: SI se chulea
    remove signer: SI se chulea
    One-Jar: NO se chulea

    3. Le damos finalizar
    4. Vamos a la carpeta en el work space donde esta proyecto (donde esta guardando el programa en el pc)
    5. Ahi aparece el nuevo jar y listo click y todo funcionando

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *