Buscar publicaciones

Convertir una aplicación Java en un .EXE de Windows

Tomando como base el ejemplo de Servidor y Cliente TCP en Java vamos a crear un archivo ejecutable de Windows .EXE con el Servidor.

Bien sabemos, que Java no genera código de máquina, sinó un bytecode (.class) que luego es interpretado por la Máquina Virtual. Lo que haremos, en principio será generar un archivo .jar donde introducir todos los archivos necesarios para ejecutar nuestra aplicación y luego crear una aplicación que lance ese .jar.

  • En principio, dentro del .jar también deberemos incluir un “manifest file” donde se añadirá información como el nombre de la clase donde se encuentra el método main() y el path donde se encuentran los.class:

[CODE]
Main-Class: Servidor
Class-Path: Servidor.jar
[/CODE]

  • Para generar el .jar utilizaremos el programa jar incluido en el JDK. Para ello, en principio agregamos a nuestra variable de entorno Path la ruta de los binarios del JDK:

[CODE]
set Path=%Path%;”C:\Program Files\Java\jdk1.6.0_03\bin”
[/CODE]

  • Luego, en el directorio donde está nuestros .class, ejecutamos:

[CODE]
jar vcfm Servidor.jar Servidor.mf Servidor.class
[/CODE]

  • Para probar nuestra aplicación, ejecutamos:

[CODE]
java -jar Servidor.jar
[/CODE]

  • Finalmente, para generar nuestro .exe, podemos:
    • Compilar un programa en C que ejecute un system(“java -jar Servidor.jar”)
    • Utilizar jStart32, que básicamente hace lo mismo

Pongo, a disposición para la descarga, el proyecto completo sockets_demo (Servidor y Cliente TCP), que incluye los .java, los .class, el mf, el jar y el .exe.

8 comments on Convertir una aplicación Java en un .EXE de Windows

  1. Muy buen aporte, ehm, yo prefiero utilizar el JSmooth para crear exe, este metodo no lo sabia, asi que creo que lo probare, muy wena web, yo tambien pondre una similar en poco tiempo…

  2. Pingback: JSmooth
  3. El problema de JSMooth es que te genera los temporales y te deja en esos temporales al archivo jar.
    Yo busco una aplicacion de libre distribucion que no genere temporales.

  4. Buen aporte muy sencillo y practico, yo tuve problemas con el JSMooth asi que me quedo con esta alternativa, lo que quisiera que me den un alcance es que yo he programado una aplicacion en Jcreator a pedido de un colega, pero mi inconveniente es que al utilizar las librerias para el Jasperreports no logro crear el acceso directo, mediante el create jar file me crea el archivo pero no lo puedo abrir debido a estas librerias, bueno no la puedo migrar a otra aplicacion porq es un trabajo en este lenguaje si alguien me pudiera dar alguna alternativa estare agredecido

    saludos,

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *