Llega un momento, en la vida de todo programador
principiante, en el que éste quiere enseñar a sus amigos/as el
programa tan genial que ha hecho (aunque sólo sea ese en el que sale
por la consola la frase “Hola, mundo”). En ese momento, los
susodichos amigos/as, hermanos/as, primos/as o padres le dirán algo
así como: “Ah, bien. Pero, ¿cada vez que quieras hacer eso tienes
que abrir Eclipse/NetBeans/cmd?. ¿No puedes hacer que funcione
dándole doble clic a un icono?.” Y nuestro pobre programador novel
se queda chafado.
Hoy os vamos a explicar cómo hacer para
desplegar vuestras aplicaciones para poder distribuirlas después, o
para poder iniciarlas desde el escritorio. Lo vamos a hacer a través
de la línea de comandos, porque cada IDE viene con su propio
botoncito para hacer esta tarea, y aquí no podemos cubrirlos todos.
Además, un poco de MS-Dos o Shell nunca viene mal. Si lo necesitáis,
seguro que googleando encontráis un tutorial específico para la IDE
que utilizéis vosotros.
Para empezar, lo primero que hay que hacer es
crear un fichero .jar. Un
fichero .jar no es más que un archivador de java (jar = java
archive) para guardar todos los archivos que necesites para ejecutar
el programa.
Por ejemplo,
supongamos que con tu Bloc de Notas has escrito un programa llamado
miPrograma.java. Al compilarlo, verás que automáticamente Java crea
miPrograma.class. Supongamos también que has escrito otro programa
más complicado que necesita varias clases más y otros archivos de
imágenes para funcionar. A este lo llamaremos miOtroPrograma.java.
Todos estos archivos los hemos guardado en MisProgramas dentro de
nuestro disco duro.
Vamos ahora al
cmd para crear los archivos .jar donde guardar estos programas. Para
no liarnos con Windows o con Linux, voy a poner simplemente los
comandos. Eso sí, recordad que en Windows para ir a algún
directorio es:
cd C:\MisProgramas con la barra\
y en Linux es:
$
/MisProgramas con la barra/
Al crear un
.jar, Java automáticamente construye un manifiesto MANIFEST.MF donde
pone algunos datos sobre el mismo. Nosotros vamos a cambiar este
manifiesto para señalar cuál es la clase principal, es decir, dónde
está el método main, imprescindible para que todo funcione.
Esto es muy
sencillo de hacer. Simplemente abrimos nuestro editor de texto o bloc
de notas y escribimos:
Main-Class: miPrograma
Podemos añadir
otra línea para que quede bien claro dónde va a estar este
programa, poniendo el nombre del fichero que vamos a crear:
Path: .\ficheroUno.jar
Es
imprescindible que dejéis un espacio después de los dos puntos.
Ahora guardamos este manifiesto con la extensión .txt o .mf en
MisProgramas.
A continuación,
en cmd, dentro del
directorio MisProgramas,
tecleamos:
jar
-cmf manifiesto.mf ficheroUno.jar miPrograma.class
Y
ya está creado el fichero.Es muy importante que sigamos el orden del
comando, es decir, si la m de manifiesto va antes que la f de
fichero, así es como debemos escribirlos, si no se producirá un
error.
Si
ahora quisiésemos ver el contenido del fichero basta con teclear:
jar
tf ficheroUno.jar
También
podemos visualizar el proceso si en lugar de teclear -cmf
tecleamos -cvmf.
Pero
, ¿qué ocurre con el otro programa, el que tenía varias clases y
archivos?. Bueno, puedes crear un fichero .jar colocando todos los
archivos uno detrás de otro después de miPrograma.class, pero la
verdad es que eso es muy pesado. Lo más cómodo es manejarse con
paquetes. Tú ya sabes (o deberías) que para crear un paquete basta
que la primera línea de tu clase principal sea algo así:
package
miPaquete;
Ordenadito
que tú eres, has creado el directorio miPaquete y allí has metido
todos los archivos de este paquete. Lo único que tienes que hacer es
añadir el paquete entero al fichero, así:
jar
-cmf manifiesto ficheroDos.jar miPaquete
Eso
sí, manifiesto, que deberás guardar en el mismo directorio en el
que esté miPaquete, quedaría así:
Main-Class:
miPaquete.miOtroPrograma
para
evitar el famoso error de que el fichero de la clase principal no se
encuentra o no ha sido cargado.
Ahora puedes ejecutar el programa de varias
maneras:
-desde el cmd, si no has modificado el
manifiesto, con
java -cp ficheroUno.jar miPrograma
java -cp ficheroDos.jar
miPaquete.miOtroPrograma
-desde el cmd, si has
modificado el manifiesto, con
java -jar
ficheroUno.jar
java -jar
ficheroDos.jar
-o simplemente, en
Windows, yendo al fichero .jar que se ha creado en MisProgramas y
cliqueando sobre él dos veces (esto es cierto sólo a partir
de Java 1.5, aunque se puede modificar Windows para que también lo
haga con versiones anteriores, pero, vamos, ya es hora de que
actualices tu Java). También puedes crear un acceso directo en el
escritorio, para lucirte más.
Recuerda además que
puedes ver el contenido de tu fichero con WinZip o WinRar. Este mismo
fichero se ejecutará sin problemas en cualquier ordenador que tenga
instalada la JVM. ¿Y si no?. Bueno, en ese caso hay varias
soluciones.
Se puede crear una
carpeta en la que que se guarde el archivo jar, una carpeta con el
JRE (Java Runtime Environment) y un archivo .bat (o .sh en Unix) que
tenga el siguiente texto:
jre\bin\java.exe
-jar installer.jar
Yo no lo he
probado, así que no sé si
funciona. Si alguno lo ha hecho, por favor que nos lo comente.
Otra opción , pensada sobre todo para los usuarios de Windows, son
los programas que convierten los archivos .jar en .exe. Algunos de
estos programas, como JSmooth o launch4j son gratuítos y puedes
configurarlos a tu gusto. Podéis encontrar tutoriales sobre el tema
incluso en YouTube.
En fin, espero que esta entrada os haya servido al menos para poder
poner en vuestro escritorio esa aplicación tan chula que habéis
hecho. :-)