¿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?
87
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í)
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
fuente
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.jar
o simplemente hacer doble clic en él.fuente
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.
fuente