He estado agrupando JRE con mi aplicación simplemente copiando los archivos de $JAVA_HOME/jre
a la distribución de mi aplicación. Esto puede ir en contra del espíritu de Java, pero reduce los posibles problemas al asegurar que mi aplicación se ejecute en una versión de JRE que fue probada (incluida la bitness; yo uso un JNI que requiere que el JRE sea una versión de 32 bits))Eliminar el JRE para incluirlo en una aplicación: ¿qué puedo omitir?
Funciona bien, pero toda la distribución es algo grande, ¿entonces tal vez podrían omitirse algunos archivos innecesarios? De hecho, $JAVA_HOME/jre/README.txt
contiene los siguientes consejos:
Los archivos que conforman el entorno de ejecución de Java SE se dividen en dos categorías : obligatorios y opcionales. Los archivos opcionales pueden excluirse de las redistribuciones de Java SE Runtime Environment a discreción del proveedor .
La siguiente sección contiene una lista de los archivos y directorios que pueden omitirse opcionalmente de las redistribuciones con el entorno Java SE Runtime . Todos los archivos que no están en estas listas de archivos opcionales deben ser incluidos en las redistribuciones del entorno de tiempo de ejecución.
... Cuando la redistribución de la JRE en Microsoft Windows como un tiempo de ejecución privada aplicación (no accesible por otras aplicaciones) con un lanzador de costumbre, los siguientes archivos también son opcional. Estas son bibliotecas y ejecutables que se usan para soporte de Java en navegadores de Internet Explorer y familia Mozilla; estos archivos no son necesarios en una redistribución JRE privada.
Lo que me extraña es que la lista de archivos opcionales incluye, entre otros:
bin\java.exe
bin\javaw.exe
bin\javaws.exe
¿Cómo puede ser opcional java/javaw.exe
? ¿Cómo se supone que debo iniciar una aplicación Java sin ellos? Aparentemente, no sé algo (probable), o las instrucciones son simplemente erróneas.
Puede que te interese http: // stackoverflow.com/questions/2258932/embed-a-jre-in-a-windows-executable – Thilo