¿Cómo agrupar un JRE con Launch4j?
Tengo Launch4J en mi computadora y es un gran programa. Una de sus características que me interesa es la capacidad de agrupar un JRE en el archivo .EXE general. Sin embargo, no puedo encontrar ninguna documentación que describa cómo hacer esto.
¿Cómo incluyo un JRE con el EXE? Además, ¿dónde consigo un JRE compacto y portátil para ejecutar? Los enlaces de descarga en Oracle son para los paquetes de instalación.
Después de algunos intentos, finalmente consigo una solución para incluir el jre en mi aplicación:
Empaqueto mi aplicación como un archivo zip con las siguientes carpetas dentro:
containerFolder
|- jre
|-bin (in bin there is java.exe)
|-lib
|- cfg (to save the user configuration, but it's not needed)
|- bin (my application with the .exe and the .jar and all the other stuff)
En el archivo xml de launch4j configuro el jre así:
<jre>
<path>../jre</path>
<opt>-DgvSIG.confDir=../cfg</opt>
</jre>
El truco aquí es que la ruta no es al archivo java.exe. La ruta al jre es relativa a la posición del .exe y debe apuntar a una carpeta antes del archivo java.exe.
La carpeta jre que estoy usando es solo copiar y pegar de la carpeta jre instalada en un sistema Windows.
Hice lo siguiente y funcionó para mí usando la versión Launch4j 3.11:
- Creé una nueva carpeta para mi aplicación (llamada, por ejemplo, MyApp).
- Copié el archivo jar de la carpeta dist del proyecto java a MyApp junto con la carpeta lib.
- Creé una carpeta llamada jre en la carpeta de mi aplicación MyApp, por lo que ahora la carpeta MyApp contiene:
- MiAplicación.jar
- lib <- esto tiene las bibliotecas que necesita mi aplicación java.
- jre
- Copié las carpetas bin y lib de la carpeta java jre (C:\Program Files (x86)\Java\jre7) a MyApp\jre
En Launch4j, habiendo configurado todas las opciones requeridas, luego configure la ruta JRE incluida en "jre"
- Asegúrese de que en las opciones de búsqueda esté seleccionado "Usar solo tiempos de ejecución JDK privados".