¿Cómo puedo convertir mi programa Java en un archivo .exe? [cerrado]

500

Si tengo un archivo fuente Java (* .java) o un archivo de clase (* .class), ¿cómo puedo convertirlo en un archivo .exe?

También necesito un instalador para mi programa.

Waseem
fuente
1
pirateo simple para applets: escriba un código C con main y una llamada a la función "system" como system ("appletviewer java_src_file");
Madhusoodan P
1
¿El .exe funciona en el sistema de Windows sin JRE?
Arpit Agarwal
Solo para completar (no lo probé yo mismo porque necesitábamos un contenedor exe, no un instalador): los paquetes de instalador también se pueden crear usando javapackager (consulte docs.oracle.com/javase/8/docs/technotes/guides/deploy/… ) . Para crear el instalador EXE o MSI, adicionalmente se debe descargar e instalar Inno Setup o WiX.
anre
Puede ser NSIS también ayuda; nsis.sourceforge.net/Java_Launcher
baris.aydinoz

Respuestas:

324

javapackager

La herramienta Java Packager compila, empaqueta y prepara las aplicaciones Java y JavaFX para su distribución. El comando javapackager es la versión de línea de comandos.

- Documentación de Oracle

La javapackagerutilidad se envía con el JDK. Puede generar archivos .exe con la -native exebandera, entre muchas otras cosas.

WinRun4J

WinRun4j es un lanzador de Java para Windows. Es una alternativa a javaw.exe y proporciona los siguientes beneficios:

  • Utiliza un archivo INI para especificar classpath, clase principal, vm args, program args.
  • Nombre ejecutable personalizado que aparece en el administrador de tareas.
  • Argumentos JVM adicionales para un uso de memoria más flexible.
  • Reemplazo de icono incorporado para icono personalizado.
  • [siguen más viñetas]

- Página web de WinRun4J

WinRun4J es una utilidad de código abierto. Tiene muchas caracteristicas.

empacador

Empaqueta su JAR, activos y una JVM para su distribución en Windows, Linux y Mac OS X, agregando un archivo ejecutable nativo para que parezca una aplicación nativa. Packr es el más adecuado para aplicaciones GUI.

- paquete LÉAME

Packr es otra herramienta de código abierto.

JSmooth

JSmooth es un contenedor ejecutable de Java. Crea lanzadores nativos de Windows (.exe estándar) para sus aplicaciones java. Hace que la implementación de Java sea mucho más sencilla y fácil de usar, ya que puede encontrar cualquier Java VM instalada por sí misma.

- Sitio web de JSmooth

JSmooth es de código abierto y tiene características, pero es muy antiguo. El último lanzamiento fue en 2007.

JexePack

JexePack es una herramienta de línea de comandos (ideal para secuencias de comandos automatizadas) que le permite empaquetar su aplicación Java (archivos de clase), opcionalmente junto con sus recursos (como GIF / JPG / TXT / etc), en un único EXE de Windows comprimido de 32 bits , que se ejecuta con Java Runtime Environment de Sun. Tanto la consola como las aplicaciones en ventana son compatibles.

- Sitio web de JexePack

JexePack es un software de prueba. El pago se requiere para el uso de producción, y los archivos exe creados con esta herramienta mostrarán "recordatorios" sin pago. Además, el último lanzamiento fue en 2013.

InstallAnywhere

InstallAnywhere facilita a los desarrolladores la creación de software de instalación profesional para cualquier plataforma. Con InstallAnywhere, se adaptará rápidamente a los cambios de la industria, llegará al mercado más rápido y ofrecerá una experiencia de cliente atractiva. Y conozca la vulnerabilidad de los componentes OSS de su proyecto antes de enviar.

- Sitio web de InstallAnywhere

InstallAnywhere es un paquete comercial / empresarial que genera instaladores para programas basados ​​en Java. Probablemente sea capaz de crear archivos .exe.

Archivos JAR ejecutables

Como alternativa a los archivos .exe, puede crear un archivo JAR que se ejecute automáticamente al hacer doble clic, agregando un punto de entrada al manifiesto JAR .


Para más información

Una excelente fuente de información sobre este tema es el artículo de Excelsior " Convertir Java a EXE: por qué, cuándo, cuándo no y cómo ".

Consulte también el artículo complementario "Las mejores herramientas de conversión de JAR a EXE, gratuitas y comerciales ".

Arrendajo
fuente
Es mejor usar eclipse y Jsmooth. Siga estos pasos regilanj.wordpress.com/2017/11/19/…
Maria Irudaya Regilan J
¿Alguno de estos funcionaría para mi situación? stackoverflow.com/questions/56674075/…
gunslingo el
112

Launch4j

Launch4j es una herramienta multiplataforma para envolver aplicaciones Java distribuidas como frascos en ejecutables nativos ligeros de Windows. El ejecutable se puede configurar para buscar una determinada versión de JRE o usar una incluida, y es posible establecer opciones de tiempo de ejecución, como el tamaño de almacenamiento dinámico inicial / máximo. El contenedor también proporciona una mejor experiencia de usuario a través de un icono de aplicación, una pantalla de presentación nativa anterior a JRE, un nombre de proceso personalizado y una página de descarga de Java en caso de que no se encuentre el JRE apropiado.

- Sitio web de Launch4j

the.duckman
fuente
35

ACTUALIZACIÓN: GCJ está muerto. Se eliminó oficialmente del proyecto GCC en 2016. Incluso antes de eso, estuvo prácticamente abandonado durante siete años y, en cualquier caso, nunca fue lo suficientemente completo como para servir como una implementación alternativa de Java viable.

Ve a buscar otro compilador Java AOT.

GCJ: El compilador GNU para Java puede compilar el código fuente de Java en código máquina nativo, incluidos los ejecutables de Windows.

Aunque no todo en Java es compatible con GCJ, especialmente los componentes de la GUI (consulte ¿Qué API de Java son compatibles? ¿Qué tan completa es la pregunta de soporte? De las preguntas frecuentes ). No he usado mucho GCJ, pero por las pruebas limitadas que he hecho con aplicaciones de consola, parece estar bien.

Una desventaja de usar GCJ para crear un ejecutable independiente es que el tamaño del EXE resultante puede ser bastante grande. Una vez compilé una aplicación de consola trivial en GCJ y el resultado fue un ejecutable de aproximadamente 1 MB. (Puede haber formas de evitar esto que no conozco. Otra opción serían los programas de compresión ejecutables).

En términos de instaladores de código abierto, Nullsoft Scriptable Install System es un instalador programable. Si tiene curiosidad, hay ejemplos aportados por los usuarios sobre cómo detectar la presencia de un JRE e instalarlo automáticamente si el JRE requerido no está instalado. (Solo para hacerle saber, no he usado NSIS antes).

Para obtener más información sobre el uso de NSIS para instalar aplicaciones Java, consulte mi respuesta a la pregunta " ¿Cuál es la mejor manera de distribuir aplicaciones Java? "

Coobird
fuente
2
El proyecto está realmente muerto, como puedo ver. No hay noticias en la página principal
Vladislav Rastrusny
El desarrollo de GNU Java se ha movido prácticamente a OpenJDK, ya que las fuentes que no son de Oracle no pudieron acceder al TCK para su validación.
Thorbjørn Ravn Andersen
25

Puede hacer un archivo por lotes con el siguiente código:

start javaw -jar JarFile.jar

y convierta el .bat a un .exe usando cualquier convertidor de .bat a .exe.

MultiplyByZer0
fuente
2
Un buen contenedor trae un JRE o lo instala si es necesario y maneja situaciones de error.
Thorbjørn Ravn Andersen
16

Estamos utilizando Install4J para construir instaladores para entornos Windows o Unix.

Es fácilmente personalizable hasta el punto en que desea escribir scripts para acciones especiales que no se pueden hacer con diálogos estándar. Pero a pesar de que estamos configurando servicios de Windows con él, solo estamos usando componentes estándar.

  • instalador + lanzador
  • windows o unix
  • programable en Java
  • tarea de hormigas
  • muchos paneles y acciones estándar personalizables
  • opcionalmente incluye o descarga un JRE
  • También puede iniciar servicios de Windows
  • múltiples idiomas

Creo que Launch4J es de la misma compañía (solo el lanzador, sin instalador).

PD: lamentablemente no me pagan por este respaldo. Simplemente me gusta esa herramienta.

Stroboskop
fuente
15

El último Java Web Start se ha mejorado para permitir un buen funcionamiento sin conexión, así como para permitir la "instalación local". Vale la pena investigarlo.

EDITAR 2018: Java Web Start ya no se incluye con los JDK más nuevos. Oracle está empujando hacia un modelo de "despliegue su aplicación localmente con un JRE incluido".

Thorbjørn Ravn Andersen
fuente
Aparentemente, a JWS se le ha reforzado tanto la seguridad que requiere mucho más esfuerzo que antes para funcionar. Sin embargo, aún podría ser útil para los instaladores.
Thorbjørn Ravn Andersen
9

Si necesita convertir toda su aplicación a código nativo, es decir, un EXE más DLL, existe ExcelsiorJET . Descubrí que funciona bien y proporcioné una alternativa para agrupar un JRE.

mdma
fuente
Realmente caro, sin embargo.
Mordechai
6

Yo diría que launch4j es la mejor herramienta para convertir un código fuente de Java (.java) a un archivo .exe. Incluso puede agrupar un jre para su distribución e incluso el exe puede ser iconificado. Aunque el tamaño de la aplicación aumenta, se asegura de que la aplicación funcione perfectamente incluso si el usuario no tiene un jre instalado. También se asegura de que pueda proporcionar el jre específico requerido para su aplicación sin que el usuario tenga que instalarla por separado. Pero desafortunadamente, Java pierde su importancia. Su soporte multiplataforma se ignora por completo y la aplicación final solo es compatible con Windows. Pero eso no es gran cosa, si solo atiende a usuarios de Windows.

Pratanu Mandal
fuente
5

Puedes usar Janel . Este último funciona como un iniciador de aplicaciones o un iniciador de servicios (disponible desde 4.x).

L. BIZE
fuente
4

Alternativamente, puede usar un traductor de Java a C (por ejemplo, JCGO ) y compilar los archivos C generados en un archivo binario nativo (.exe) para la plataforma de destino.

Ivan Maidanski
fuente
2
Soy muy incrédulo de la efectividad de este método. Tendría que verlo para creerlo (piense en el hecho de que la mayoría del código Java son llamadas API al JRE, y todo eso no está presente en C, no importa las diferencias en cómo funciona el lenguaje).
Camilo Martin
3

Se me puede perdonar por estar en contra de convertir un programa de Java a una aplicación .exe y tengo mis razones. La principal es que un programa Java puede compilarse en un archivo jar de muchos IDE. Cuando el programa está en formato .jar, puede ejecutarse en múltiples plataformas en lugar de .exe, que se ejecutará solo en un entorno muy limitado. Estoy a favor de la idea de que los programas Java no deberían convertirse a Exe a menos que sea muy necesario. Siempre se pueden escribir archivos .bat que ejecutan el programa Java mientras es un archivo jar.

si es realmente necesario convertirlo a exe, el convertidor Jar2Exe lo hace silenciosamente y también se pueden adjuntar bibliotecas compiladas junto con la aplicación principal.

ErrorNotFoundException
fuente
La cuestión es que el poder de Java es la portabilidad, pero mucha gente solo necesita un exe básico de Windows. Personalmente, me encanta el concepto de Java ... pero me gustaría distribuir algo que mis usuarios puedan ejecutar, sin tener que descargar un JRE.
Balmipour
2

Puede convertir jar a exe usando jar2exe . Sin embargo, debe comprar el software. Si necesita un software de código abierto, sugeriría JSmooth .

Raghunandan
fuente