¿Cómo agrupar un JRE con Launch4j?

80

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 empaqueto un JRE con el EXE? Además, ¿dónde puedo ejecutar un JRE portátil y compacto? Los enlaces de descarga en Oracle son para los paquetes de instalación.

CodeBunny
fuente
5
Launch4j le permite empaquetar un JRE con su exe, así que junto a él. No puede usarlo para incrustar el JRE en su exe.
THelper
¿Qué significa eso incluso ...
DKIT

Respuestas:

82

Después de algunos intentos, finalmente obtengo una solución para agrupar el jre en mi aplicación:

Empaquete 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.

Francisco Puga
fuente
4
¡Eso me ayudó mucho! Los documentos no son muy claros sobre esto ... Funciona como un encanto :-)
Konrad 'ktoso' Malawski
Hola, ¿cuál es esta ruta <path> ../jre </path>? O es una ruta existente que está en la carpeta C: //..java o un nuevo instalador de Java JRE que se descarga.
RajaReddy PolamReddy
@RajaReddyPolamReddy es la ruta relativa desde su archivo .exe a la carpeta donde se encuentra el jre dentro de su aplicación
Francisco Puga
9
La pregunta era cómo empaquetar el JRE en el EXE con launch4j. Esta respuesta muestra cómo decirle a launch4j que use un JRE específico que ha incluido con su EXE, pero no dentro de él. Esto parece ser lo mejor que se puede hacer con launch4j. (Otra respuesta a continuación muestra una manera de crear un instalador que luego instalar tanto el archivo EXE y el JRE, pero el JRE no estará en el archivo EXE.)
Enwired
1
¿Y qué pasa con JDK11 que no viene con un JRE?
Panagiss
12

Hice lo siguiente y funcionó para mí usando ver Launch4j 3.11:

  1. Creé una nueva carpeta para mi aplicación (llamada por ejemplo MyApp).
  2. Copie el archivo jar de la carpeta dist del proyecto java a MyApp junto con la carpeta lib.
  3. Creé una carpeta llamada jre en la carpeta de mi aplicación MyApp, por lo que ahora la carpeta MyApp contiene:
    • MyApp.jar
    • lib <: tiene las bibliotecas que necesita mi aplicación Java.
    • jre
  4. Copió las carpetas bin y lib de la carpeta java jre (C: \ Archivos de programa (x86) \ Java \ jre7) a MyApp \ jre
  5. En Launch4j, habiendo configurado todas las opciones requeridas, luego configure la ruta de JRE incluida en "jre"

    Opciones de Launch4j JRE

  6. Asegúrese de que en las opciones de búsqueda esté seleccionado "Usar solo tiempos de ejecución JDK privados".
Ahmed Awad
fuente
6

El mismo problema como tu compañero. No se preocupe ahora. Todo se resuelve con la máxima profundidad para resolver una solución futura. Solución de cómo puede empaquetar su JRE para su jar sin la necesidad de que el usuario tenga que instalar java o no. Su aplicación Java se ejecutará.

  1. Copiar liby binla carpeta de su JRE carpeta a la carpeta dist proyecto

conversión de jar a exe

  1. abra launch4j e ingrese la siguiente configuración. ingrese la descripción de la imagen aquí

El truco es que debe proporcionar la ruta completa al archivo javaw.exe incluido.

¡¡¡¡Disfrutar!!!!

Daniel Adenew
fuente
1
Coloque cualquier archivo en la carpeta dist que cometa este error durante la limpieza y compilación: no se puede eliminar el archivo ...
ParisaN
0

Acabo de hacer esto. Arriba describa claramente el método para agrupar jre.

Aquí, solo comparto una experiencia por la que he luchado. Si desea crear un instalador exe después de que launch4j lo haya creado, preste atención a la ruta del archivo para launch4j y jre. Este es mi camino que usé para resolver mis problemas:

launch4j, bin / jre, recursos / bin / jre.

launch4j, bin y los recursos están al mismo nivel.

Xloon
fuente
-2

El jre generalmente 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 se encuentra en

${jdk folder}\jre

Las partes que no necesita del JRE probablemente podrían eliminarse manualmente si realmente lo desea (no estoy seguro de qué está disponible en línea).

hbhakhra
fuente
¿Cómo lo agrupo en el EXE? Estoy tratando de empaquetar todo en el frasco para no tener que preocuparme si el usuario tiene Java instalado. Me doy cuenta de que simplemente hacer que descarguen Java es probablemente la mejor idea; sin embargo, me gustaría experimentar con todas mis opciones de implementación.
CodeBunny
3
@CodeBunny Esto no es posible con Launch4j solo, pero alguien encontró otra buena solución: mark.koli.ch/…
Zero3