¡Gracias por visitar Tecno Academy!                     Informática, todos los niveles - Trucos - Apuntes - Diapositivas - Libros - Enlaces - Curiosidades - Descargas - Tecnologías - Opiniones - Podcasting, Byte - Internautas TV - Pizarra Virtual                   

lunes, 19 de noviembre de 2007

Crear ejecutables EXE a partir de código Java

Una de las experiencias más desagradables para los estudiantes de Informática cuando tienen que entregar prácticas en Java es encontrarse que, cuando van a ejecutarlas en el ordenador del profesor o del laboratorio donde las defienden, no funcionan porque las variables de entorno PATH o CLASSPATH no están configuradas para la ruta de su proyecto. Hasta ahora, a mis alumnos les recomendaba que comprimiesen el proyecto en un archivo jar. Para ello, les remitía a la página del entorno BlueJ, herramienta que ya incorpora una opción de menú específica para crear jars. Luego, lo ejecutamos con java -jar [param1 [,param2[, ...]]] y normalmente no hay problemas a la hora de correr el programa en otro ordenador, salvo las relativas a no disponer de la JVM adecuada.

Otra forma, más directa todavía, es crear un archivo ejecutable (exe) para llegar y abrir el programa en Windows sin más. Vamos a ver como se haría. Echaremos mano de una herramienta gratuíta denominada JSmooth. Seguís el enlace, la descargáis y la instaláis en vuestro sistema Windows.

Para que tengáis la certeza de que lo estáis haciendo adecuadamente, yo la he probado con este sencillo sudoku en modo consola. Lo descargáis también en vuestro disco y lo descomprimís en una carpeta que se llame sudoku. Es una sola clase denominada Sudoku.java, así que no deberíais tener mayores problemas. Hay que compilarla antes de nada. Ya sabéis, en la consola de comandos de Windows, accedéis a la carpeta sudoku; en mi caso la he descargado en el escritorio, así que sería:
> cd c:\Documents and Settings\Salva\Escritorio\sudoku
y una vez ahí

sudoku> javac Sudoku.java
se creará el archivo class correspondiente Sudoku.class

Ahora que el programa está compilado, abro el JSmooth. Me voy a la sección de Skeleton. En Skeleton Selection, cojo Console Wrapper (dado que el juego está en modo consola; si tuviese interfaz gráfica cogeríais Windowed Wrapper). En el área de Skeleton Properties cambié el mensaje por defecto, para mostrar en caso de que no se encuentre la JVM y haya que descargarla, por otro equivalente en español: "Java no está instalado en su equipo. ¿Desea instalarlo ahora?" También marqué la casilla PressKey. Con esta opción el usuario ha de pulsar una tecla para continuar después de haber leído cualquier mensaje (de error, por ejemplo), si no, se visualiza tan rápido en la consola que es imposible verlo.

Después vamos a la sección Executable. Ahí basta con introducir en Executable Binary el nombre que queremos para nuestro ejecutable. Por originalidad se me ocurrió Sudoku.exe. Observad también que os deja incluso configurar un icono de aplicación pero ¡para qué complicarse!

La tercera sección que visitamos es Application. En Main Class tenemos que indicar cuál es la clase que tiene el método main() de entrada. En mi caso, la única que hay, Sudoku. En Classpath seleccionáis la carpeta sudoku.

La sección JVM Selection también es interesante porque podéis marcar la versión mínima del JVM que se necesita para poder ejecutar el programa. Por ejemplo, vamos a rellenar el campo Minimun JVM Version como 1.2 suponiendo que no funcionase en las anteriores. En cuanto a la JVM Search Sequence y el resto de campos no es necesario modificar nada.
Ahora vamos al menú Project->Compile... Como no lo hemos guardado nos aparece el cuadro de diálogo para hacerlo. Guardadlo en la carpeta sudoku con cualquier nombre. Si lo guardáis en una carpeta diferente, entonces los caminos de la configuración han de ser relativos al del proyecto y es un lío; así que no os compliquéis la vida y hacedme caso: guardadlo en la misma carpeta que las clases java.

Una vez compilado, podéis ir a la carpeta sudoku y comprobar que os ha creado (si todo ha ido bien) un archivo Sudoku.exe. Al ejecutarlo podéis disfrutar del juego en una consola de comandos. También se puede ejecutar desde el propio JSmooth en el menú Project->Run the exe...


1 comentario:

Fandez dijo...

Interesante. Gracias

Por cierto, ¿sabrías cómo configurar el jsmooth para que al generar el .exe la ruta de ejcucion fuera variable? Es decir, que si cambio el .exe de sitio no de problemas

Un saludo y gracias