Mostrando entradas con la etiqueta jar. Mostrar todas las entradas
Mostrando entradas con la etiqueta jar. Mostrar todas las entradas

lunes, 27 de junio de 2011

Excluir librerías del jar con NetBeans

Este post sirve de continuación al que escribí hace casi un año, explicando cómo incluir las librerías de nuestro proyecto en el jar generado por NetBeans. En este caso, y por petición del amigo Anómino a través de los comentarios, vamos a ver cómo excluir librerías.

La clave para hacer lo que queremos está en la etiqueta zipgroupfileset del build.xml. Con este elemento le indicamos al entorno qué queremos añadir al jar que generamos. En aquél caso indicábamos que queríamos meter todos los jar de la carpeta dist/lib.


Ahora se nos presentan dos opciones para quitar elementos. El primero es indicar explícitamente qué librerías no nos interesan en el mismo zipgroupfileset utilizando su atributo excludes.


En este caso, como puede verse, le estamos indicando que no incluya la librería beansbinding.

Si necesitamos dejar fuera más de una, podemos añadirlas separándolas por un espacio.



Como segunda alternativa, en lugar de pedir que se incluyan todas, y luego añadir excepciones, podemos meter un elemento para cada una de las librerías que queramos tener en el jar de la aplicación, de la siguiente forma.


O, igual que antes, podemos tener un único elemento con todas las librerías a incluir separadas por espacios.



En conclusión, que para determinar exactamente qué librerías queremos en el jar de nuestra aplicación no tenemos más que jugar con los atributos includes y excludes, y podremos conseguir lo que nos interese.

viernes, 16 de julio de 2010

Ejecutable Java

Una pregunta que todos nos hacemos alguna vez cuando empezamos a trabajar con Java es: ¿cómo creo un ejecutable para mis programas? Esta pregunta, normalmente, parte de una laguna conceptual, ya que no tiene ninguna lógica. Java es un lenguaje interpretado, cuyos programas corren sobre la máquina virtual, luego no tiene sentido pensar en un ejecutable, que es algo que se lanza directamente sobre la máquina real.

De todas formas, posiblemente, lo que la mayoría de nosotros quiere decir con esa pregunta es: ¿¿en serio tengo que escribir java -jar programa.jar en la línea de comandos cada vez que quiero arrancar mi aplicación?? ¿¿No existe una forma de tener un iconito en el escritorio, y hacer doble clic sobre él??

Pues sí, claro. De hecho existen varias alternativas para tener un "ejecutable" java; pero es importante tener claro que en ningún caso se trata de un ejecutable realmente.

La primera opción es crear un fichero .bat, y dentro meter los comandos para situarnos en la ubicación de nuestro programa y lanzarlo. Un ejemplo lo podemos ver con la herramienta JMeter. En la carpeta bin de su instalación encontraremos un fichero jmeter.bat, que hace esto básicamente, fijando montones de parámetros e historias antes, eso sí.

La segunda opción sería simplemente la de indicarle a nuestro amigo Windows que a la hora de abrir los ficheros con extensión jar tiene que utilizar la máquina virtual de Java. Esto lo podemos hacer seleccionando el menú Abrir con... sobre el jar, y eligiendo el correspondiente java.exe. Si le decimos al sistema operativo que utilice siempre esa opción podremos ejecutar los jar con doble clic sobre ellos.

Por último queda otra opcion que nunca he utilizado personalmente, que son los muchos programas que generan "ejecutables java", como exe4j, IzPack o JSmooth. Por lo que he podido ver, en general lo que hacen es simular de alguna forma lo que haría un ejecutable (algunos incluso ofrecen la posibilidad de incluir la JVM dentro del fichero de la aplicación). 

En cualquier caso hay que tener presente que los programas Java se lanzan siempre sobre la JVM, y por tanto no tiene sentido hablar de ejecutables tal cual.

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.