miércoles, 14 de julio de 2010

Incluir librerías en el jar con NetBeans

Cuando desarrollamos una aplicación de escritorio con NetBeans, de forma automática se genera una carpeta dist dentro del proyecto. En ella se crean el jar de la aplicación, y otra carpeta lib, que contiene las librerías que se utilizan en nuestro programa.

Para trabajar en desarrollo esta situación no presenta inconvenientes. Sin embargo, cuando queremos distribuir el jar de nuestra aplicación, nos encontramos que tenemos que distribuir también la carpeta con las librerías, cuando lo más cómodo sería trabajar con un único fichero.

La forma en que NetBeans crea la distribución de nuestro proyecto viene especificada en el fichero build.xml, que podemos encontrar en el directorio raíz del mismo. Éste, si no lo hemos tocado, no tiene más que un montón de comentarios, y una descripción que no aporta demasiado.


Si queréis editar el fichero directamente desde el IDE, podéis hacerlo accediendo a la pestaña Files, en la que se puede ver la carpeta del proyecto completa.

Para crear un único jar con todas las librerías del proyecto, añadiremos un elemento target al fichero, denominado package-for-store. En él indicaremos el nombre del jar que vamos a generar, el directorio dentro de nuestro proyecto en el que queremos que se cree, y el contenido del fichero: el jar generado por netbeans, y todos los jar de la carpeta lib.

El resultado sería algo así.



La forma de trabajo seguirá siendo la misma, pero cuando tengamos completo el desarrollo, y necesitemos crear nuestro jar con todo el contenido para poder llevárnoslo a donde queramos, no tenemos más que ir a la pestaña Files, hacer clic derecho sobre el build.xml, y seleccionar Run Target - Other Targets - package-for-store (el nombre del target que hemos añadido al build).

En el directorio que hayamos indicado tendremos el jar con todo el contenido.

19 comentarios:

  1. Muchísimas gracias!
    Es justo lo que llevaba buscando desde hace tiempo.

    ResponderEliminar
  2. Me alegro de que te haya servido de ayuda. Gracias por comentarlo.

    ResponderEliminar
  3. Shhhh Maestrooooo !!!!

    Me sirvió muchisisisimo, ya tenia buscandolo por mucho tiempo, gracias !!!

    ResponderEliminar
  4. Hola!!! Tengo tiempo buscando esta información, pero no me queda claro dónde debo agregar exactamente este target. En el build.xml o en el build-impl.xml?
    Ya probé en ambos y nada que me aperece la opción cuando voy a Run Target.

    Gracias!

    ResponderEliminar
  5. Hola Yessica, el target se añade al fichero build.xml, dentro de la sección project. En los comentarios que tiene el propio fichero puedes ver también algunos ejemplos de cómo hacerlo.
    A mí la nueva opción me aparece en Run Target desde el momento en que guardo.
    Suerte, y si te quedan dudas no dudes en contactar.

    ResponderEliminar
  6. Hola, muy util tu información, quisiera saber como puedo hacer para que excluya ciertas libs?

    ResponderEliminar
  7. Hay una nueva entrada en la que se explica:

    http://tecno-aspirinas.blogspot.com/2011/06/excluir-librerias-del-jar-con-netbeans.html

    ResponderEliminar
  8. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  9. ayuda..... estoy trabajando en netbeans 7.0 y corro mi aplicacion y funciona. pero cuando construyo y genero el jar me genera el jar junto a la carpeta lib con los jar externo ke uso. pero cuando voy a ese jar generado y le doy doble clic no me carga las librerias externas.... ke estoy haciendo mal????... ya hize lo ke dice tu post.. pero pss tampoco funciono...

    ResponderEliminar
  10. Funciona de manera excelente. Muchas gracias me ayudo mucho!!!

    ResponderEliminar
  11. me podrias ayudar por favor no sé como realizarlo :( te dejo el link de un proyecto muy simple, desde ya muchas gracias

    http://www.megaupload.com/?d=VWWODECK

    ResponderEliminar
  12. Gracias!!! sirvio mucho...

    ResponderEliminar
  13. Se que hace ya mucho que esto se publicó pero me ha funcionado a la perfección después de meses de búsqueda por toda la web.

    Mil graciaaaaaaaaaaaaas!!!

    ResponderEliminar
  14. buen di no me funciono no se a que se deba este error

    Target "jars" does not exist in the project . It is used from target "package-for-store".

    alguien que me pueda ayudar

    ResponderEliminar
  15. Muchísimas gracias!! Funcionó perfectamente

    ResponderEliminar
  16. se puede quitar jar dependiendo la arquitectura de la JVM en el momento de la compilación con netbeans?

    ResponderEliminar
  17. se puede quitar jar dependiendo la arquitectura de la JVM en el momento de la compilación con netbeans?

    ResponderEliminar
  18. Hola disculpa yo tengo un problema lo que pasa es que si puedo generar el archivo .jardín pero las librerias no me aparecen en la carpeta dist

    ResponderEliminar

Cualquier aportación será bienvenida