Vous êtes sur la page 1sur 4

Apuntes de Java

Todas las semanas un nuevo apunte! Si Dios (y el trabajo) lo permiten :) Visita http://kenai.com/projects/apuntes Google Groups: Apuntes de Java

Pgina principal Bsqueda Acerca del autor Facebook

martes, 8 de junio de 2010


Empaquetar una aplicacin para distribuir, desde NetBeans
Uno de los tantos motivos por lo que utilizo NetBeans en lugar de otro IDE, es que utiliza la Apache Ant para compilar, crear .jar .war .ear, javadoc, etc.. prcticamente para todo, y solo usando un archivo .xml. Y lo mejor es que se puede personalizar el .xml a nuestro antojo. En este post se va a explicar cmo empaquetar una aplicacin Swing en un archivo .zip para ser distribuido a los usuarios finales.

Qu hace NetBeans?
Si al hacer una aplicacin Swing con NetBeans utilizamos diversas bibliotecas adicionales, el IDE nos puede crear una carpeta lista para distribuir a los usuarios incluyendo todas los .jars necesarios. Para ello hacemos clic derecho sobre el cono del proyecto y seleccionamos "Build" (o Clean and Build)

Al hacer esto, el NetBeans compila, y construye la carpeta "dist" para distribuir. Esta carpeta se encuentra en la misma carpeta del proyecto. Podemos verla en el panel "Files" del NetBeans (Teclas Ctrl+2)

Ahora bien qu hacemos con ese .jar? En el README.TXT lo explica. Pero NetBeans tambin lo dice en el panel "Output" (Ctrl+4) despus de construir la aplicacin.

"Para ejecutar esta aplicacin desde la lnea de comandos sin usar Ant, intente:..." y luego dice cul es el comando que se tiene que hacer. Si copiamos esa lnea, abrimos la ventana del Smbolo del Sistema, y pegamos esa instruccin para ejecutarlo, pues nos ejecutar la aplicacin sin problemas. Es ms, se podra copiar a los usuarios finales este directorio "dist" y decirles que si quieren ejecutarlo hagan esto: abrir una ventana del Smbolo del Sistema, escribir esa instruccin y listo.........creo que al usuario no le va a gustar hacer esto Por qu no mejor hacer un programa que al hacer doble clic ya se ejecut? Buena idea.

Creando un .bat
De por s, se puede hacer doble clic al archivo .jar para ejecutar la aplicacin, pero funciona si es que en el computador del usuario no tiene algn descompresor de archivos asociado a los archivos .jar. Por ejemplo, si se tiene instalado el WinRAR, al hacer doble clic sobre el archivo .jar, en lugar de que se ejecute, se abrir el WinRAR y mostrar el contenido del .jar... esto no es lo que queremos. La mejor manera es crear un archivo .bat que haga la llamada al comando java -jar bla bla Esto le podemos decir al NetBeans que lo haga. Para ello, entramos al panel "Files" (Ctrl+2) y buscamos el archivo build.xml. Este es una extensin al .xml que utiliza el NetBeans para construir la aplicacin.

Abrimos este archivo, lo revisamos un poco (todo est comentado y hay algunas instrucciones) y pondremos el tag <target name='-post-jar'/> que nos permitir realizar una tarea despus de que el NetBeans haya creado el .jar
<target name="-post-jar"> ${application.title}.jar</echo> <echo file="${dist.dir}/run.bat">java -jar </target>

El tag de la tarea <echo /> crea una salida a la consola, pero con el atributo file le estamos diciendo que la salida lo haga a un archivo. Para saber cules son los valores de las variables utilizadas en la construccin del proyecto, podemos revisar el archivo nbproject/project.properties.

Por ello utilic las variables dist.dir, application.title. Ahora bien, hagamos un "Build" al proyecto y veamos lo que hizo en la carpeta dist.

Y si vemos el contenido ser justamente lo que hemos pensado. Abrimos una ventana del explorador de windows, y le damos doble clic al .bat. Listo, usuario satisfecho. Pero.. sale una ventana negra fea con el comando de ejecucin de la aplicacin. Bueno, esto se puede solucionar. Podemos reemplazar la instruccin
<echo file="${dist.dir}/run.bat">java -jar ${application.title}.jar</echo>

Por
<echo file="${dist.dir}/run.bat">start javaw -jar ${application.title}.jar</echo> El comando de Windows start permite ejecutar una aplicacin y "soltarlo" para que se ejecute como un proceso ms del Sistema Operativo. Y el comando javaw es un comando adicional al JRE que permite ejecutar

una aplicacin java sin mostrar una ventana del Smbolo del Sistema. Bien, ahora solo nos bastara con copiar a los usuarios finales el .bat, el .jar y las bibliotecas adicionales so hubiera. Lo empaquetamos y se lo enviamos. Hay un poco de flojera para comprimir los archivos? y si me falta uno?

Creando un .zip
El Ant tambin permite comprimir archivos usando la tarea <zip />. Es realmente fcil. Creamos el siguiente tag despus del <echo />.
<zip destfile="${dist.dir}/${application.title}.zip" basedir="${dist.dir}" />

Hagamos "Clean and Build" al proyecto, y listo, ya tenemos nuestro archivo .zip para enviar a los usuarios finales.

Y les decimos "Estimados bla bla bla, descompriman el achivo .zip para ejecutar la aplicacin". Tambin tenemos flojera de enviar el mail a los usuarios? :)

Documentacin
Si deseas conocer ms tareas que vienen incluidas en el ANT, revisa la siguiente pgina.

Apache Ant User Manual: http://ant.apache.org/manual/index.html

Ah est la tarea mail

Proyecto
Y como de costumbre, aqu est el proyecto utilizado en este ejemplo:

http://java.net/downloads/apuntes/samples/netbeans/DemoSwingAntCustomized.tar.gz

Vous aimerez peut-être aussi