2010-07-30 13 views
20

Según lo solicitado y respondido here, python tiene una forma útil de implementación sin instaladores. ¿Puede Java hacer lo mismo?¿Funciona con Java sin instalar jre?

  • ¿Hay alguna forma de ejecutar el archivo jar de Java sin instalar jre?
  • ¿Hay alguna herramienta como java2exe (win32), java2bin (linux) o java2app (mac)?
+0

Tema similar: http://stackoverflow.com/questions/664858/how-can-you-package-an-executable-jar-with-a-portable-jre – h3xStream

Respuesta

14

Puede usar Launch4j para esto. Bien documentado y fácil de usar. Si bien el programa resultante aún necesita un JRE para ejecutarse, no es necesario que instale el JRE en el sistema de destino. Puede simplemente copiarlo con su aplicación y decirle a Launch4j que lo encuentre o simplemente lo termine con todo lo demás.

+1

¿Dónde están los archivos JRE? Con Mac encontré /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/*, y con PC encontré Java/jre6/lib. ¿Debo copiar todos esos archivos? – prosseek

+1

Debe copiar los dos subdirectores jre6/lib y jre6/bin conservando la estructura del subdirectorio. Y dile a Launch4j dónde encontrarlo, mejor como una ruta relativa desde el directorio del ejecutable. Personalmente coloco los directorios bin y lib en un subdirectorio llamado jre al lado de mi ejecutable. – haffax

-2

Puede que tenga un poco de suerte con GCJ - no lo he probado.

+1

Eso nunca funcionará. – TheLQ

0

puede incrustar el JRE dentro de su aplicación y crear una configuración o instalación para su aplicación.

+7

"¿Por qué esta aplicación de calculadora simple es de 26 MB?" – TheLQ

+1

También si descubrí que un programa secretamente instaló una amenaza de seguridad como Java en mi sistema sin mi consentimiento, estaría muy enojado –

0

Es posible que desee comprobar cómo lo hace Eclipse: tiene un .exe nativo que puede usar un JRE local (para la instalación).

4

Para crear ejecutables nativos, puede usar Excelsion Jet, que compila Java con código nativo. Lo usamos para un proyecto en el trabajo, y tuvimos que realizar una modificación cero en el código fuente original (que tenía como objetivo el JDK de Sun).

+1

Preguntas frecuentes: Excelsior JET no es solo un empaquetador de aplicaciones Java en binarios EXE/Linux de Windows. Realmente compila tus archivos de clase Java en instrucciones nativas x86 (IA-32). Los ejecutables resultantes necesitan el Excelsior JET Runtime para ejecutarse, pero no el Sun JRE. – TheLQ

+0

"Los ejecutables resultantes necesitan el Excelsior JET Runtime para ejecutarse". Esto es cierto, pero también es posible insertar este tiempo de ejecución en el binario generado. El binario es entonces autosuficiente. En este proceso, creo que es posible quitar el tiempo de ejecución para mantener solo las partes que se utilizan en la aplicación compilada. – barjak

Cuestiones relacionadas