Java Eclipse: diferencia entre exportar como JAR y exportar como JAR ejecutable

87

¿Cuál es la diferencia en eclipse entre exportar como un archivo JAR y exportar como un archivo JAR ejecutable? ¿No se pueden ejecutar ambos? ¿Cuáles son los pros / contras de cada uno?

Bueno en realidad
fuente

Respuestas:

98

El jar ejecutable contiene un archivo MANIFEST.MF, que define la clase principal que se ejecutará cuando se ejecute el jar.

Los jar no ejecutables son solo bibliotecas de clases, que se pueden agregar a la ruta de clases para que el código se reutilice (también contiene el archivo de manifiesto, pero no la clase principal allí)

Bozho
fuente
Cuando exportamos un archivo como un jar en lugar de un jar ejecutable, tenemos que especificar la clase principal y la ruta de clase de la biblioteca en manifest.mf.
MR Y
20

Un jar ejecutable es un archivo jar que tiene un archivo de manifiesto incrustado que incluye la declaración "Main-Class:". La "Main-Class" debe estar definida para que el tiempo de ejecución de Java sepa a qué clase llamar cuando se "ejecuta" el jar. Si un jar no incluye un manifiesto con "Main-Class:" no se considera un "jar ejecutable", es solo una biblioteca de código Java.

Supongo que esta es la diferencia en la forma en que Eclipse exporta el frasco, pero no estoy 100% seguro.

Consulte este enlace para obtener más información: http://www.skylit.com/javamethods/faqs/createjar.html

Andy White
fuente
17

Con el archivo JAR estándar, debe especificar la clase con el método principal en la línea de comando al ejecutar el jar. Con un JAR ejecutable, hay un archivo de manifiesto que contendrá esa información para que pueda escribir java -jar myRunnable.jaro simplemente hacer doble clic en él.

Eric-Karl
fuente
0

En mi caso, solía exportar como un jar cuando tenía todas las clases principales y todos los directorios de rutas de bibliotecas especificados en manifest.mf. Si muchas aplicaciones utilizan la misma biblioteca, no es necesario exportar la biblioteca compartida para cada jar. Hace que correr jar sea más rápido. Pero, muchas veces, debido a problemas de configuración en diferentes rutas de clase de servidor, no se puede acceder a la biblioteca y, en ese caso, tiene sentido exportar el jar ejecutable que hace que el archivo sea lento y grande de ejecutar.

SEÑOR Y
fuente