portability - portable - ¿Cómo agrupar un JRE con Launch4j?
launch4j 2018 (5)
Después de algunos intentos, finalmente recibo una solución para agrupar el jre en mi aplicación:
Empaqueté 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 está en el archivo java.exe. El camino a la jre es relativo a la posición de .exe y debe apuntar a una carpeta antes del archivo java.exe
La carpeta jre que estoy usando es solo una copia y pega de la carpeta jre instalada en un sistema de Windows.
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 general .EXE. Sin embargo, no puedo encontrar ninguna documentación que describa cómo hacer esto.
¿Cómo empaco un JRE con el EXE? Además, ¿dónde obtengo un JRE compacto y portátil? Los enlaces de descarga en Oracle son para los paquetes de instalador.
El mismo problema que tu compañero. No te preocupes ahora. Todo se resuelve con la profundidad máxima para resolver soluciones futuras. Solución de cómo puede agrupar su JRE para su jar sin la necesidad de que el usuario tenga que instalar java o no. Su aplicación java se ejecutará.
- Copie la carpeta
lib
ybin
desde su carpeta JRE a su carpeta de proyecto dist
El truco es que debe dar la ruta completa a la inclusión de javaw.exe.
¡¡¡¡Disfrutar!!!!
Hice lo siguiente y funcionó para mí usando ver Launch4j 3.11:
- Creé una nueva carpeta para mi aplicación (llamada, por ejemplo, MyApp).
- Copié el archivo jar de la carpeta java project dist a MyApp junto con la carpeta lib.
- Creé una carpeta llamada jre en mi carpeta de aplicaciones MyApp, así que ahora la carpeta MyApp contiene:
- MyApp.jar
- lib <- esto tiene las librerías que necesita mi aplicación java.
- jre
- Copió las carpetas bin y lib de la carpeta java jre (C: / Archivos de programa (x86) / Java / jre7) a MyApp / jre
En el Launch4j habiendo establecido todas las opciones requeridas, entonces establezca la ruta de JRE incluido en "jre"
- Asegúrese de que en las opciones de búsqueda "Solo usar tiempos de ejecución privados JDK" esté seleccionado.
La única forma en que podía agrupar un JRE era usar Launch4J y el compilador Inno Setup.
Primero, cree una carpeta ''jre6'' (por ejemplo) en el mismo directorio que su archivo de salida (.exe).
Luego copie el JRE de su sistema en su carpeta jre6.
Luego, abre Launch4J y establece la ''ruta JRE incluida'' - simplemente escriba: jre6. A continuación, haga clic en el botón Generar (obviamente, después de haber ingresado todos los demás parámetros, pero el único valor que necesita ingresar en la pestaña ''JRE'' es el valor ''Ruta JRE incluida'').
Hubiera esperado que funcionara, pero si muevo el .exe a una nueva ubicación (por lo que ya no comparte ubicación con su carpeta jre6) obtendrá el mensaje "Esta aplicación fue configurada para usar un Java Runtime Environment incluido pero el tiempo de ejecución falta o está dañado "error cuando intenta ejecutar la aplicación ...
He estado jugando con esto todo el día y no había forma de que pudiera hacer que Launch4J incluyera el JRE en el archivo .exe. Realmente es pobre en mi opinión, ya que su documentación no parece aludir a este tema en absoluto.
Entonces, lo que hice para resolver fue usar Inno Setup Compiler. Esta aplicación se utiliza para ajustar su .exe como un archivo de Windows Installer. Así que agregué una configuración al script de ISC que copia el JRE en el paquete de instalación. La línea que agregué a la secuencia de comandos (en la sección [Archivos]) fue:
Source: "M:/Netbeans/MyApp/jre6/*"; DestDir: "{app}/jre6/"; Flags: recursesubdirs createallsubdirs
... un poco de solución, pero funcionó.
Repita todos los pasos anteriores, y debe ser ordenado.
RESPUESTA TOMADA DESDE here usuario1617737
La jre normalmente se puede encontrar en su carpeta SDK. Sí, los enlaces en línea son instaladores, pero una vez que se instala, el JRE ahora se encuentra en su disco local. El mío está ubicado en
${jdk folder}/jre
Las partes que no necesita del JRE probablemente podrían eliminarse manualmente si realmente quisiera (no estoy seguro de qué está disponible en línea).