93 votes

Java Eclipse : Différence entre exporter comme un JAR et exporter comme un JAR exécutable

Quelle est la différence dans Eclipse entre exporter en tant que fichier JAR et exporter en tant que fichier JAR exécutable ? Ne sont-ils pas tous deux exécutables ? Quels sont les avantages et les inconvénients de chacun ?

101voto

Bozho Points 273663

Le jar exécutable contient un fichier MANIFEST.MF, qui définit la classe Main à exécuter lors de l'exécution du jar.

Les jars non exécutables sont juste des bibliothèques de classes, qui peuvent être ajoutées au classpath afin que le code soit réutilisé (ils contiennent également le fichier manifeste, mais pas de classe principale).

0 votes

Lorsque nous exportons le fichier juste comme un jar au lieu d'un jar exécutable, nous devons spécifier la classe principale et le classpath de la bibliothèque dans manifest.mf.

20voto

Andy White Points 36586

Un jar exécutable est un fichier jar qui possède un fichier Manifest intégré comprenant la déclaration "Main-Class :". La "Main-Class" doit être définie pour que le runtime java sache quelle classe appeler lorsque le jar est "exécuté". Si un jar n'inclut pas un manifeste avec la déclaration "Main-Class :", il n'est pas considéré comme un "runnable jar" - c'est juste une bibliothèque de code Java.

Je suppose que c'est la différence dans la façon dont Eclipse exporte le jar, mais je ne suis pas sûr à 100%.

Voir ce lien pour plus d'informations : http://www.skylit.com/javamethods/faqs/createjar.html

19voto

Eric-Karl Points 926

Avec le fichier JAR standard, vous devez spécifier la classe avec la méthode main sur la ligne de commande lors de l'exécution du jar. Avec un JAR exécutable, il y a un fichier manifeste qui contient cette information et vous pouvez simplement taper java -jar myRunnable.jar ou double-cliquez simplement dessus.

0voto

MR AND Points 356

Dans mon cas, j'ai utilisé l'exportation en tant que jar lorsque j'avais toutes les classes principales et tous les répertoires de chemin des bibliothèques spécifiés dans le manifest.mf . Si plusieurs applications utilisent la même bibliothèque, il n'est pas nécessaire d'exporter la bibliothèque partagée pour chaque jar. Cela rend l'exécution du jar plus rapide. Mais, souvent, à cause d'un problème de configuration dans différents serveurs, le chemin de la classe ne peut pas accéder à la bibliothèque et dans ce cas, il est logique d'exporter le jar exécutable qui rend le fichier lent à exécuter et volumineux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X