Java Eclipse: différence entre l'exportation en tant que JAR et l'exportation en tant que JAR exécutable

87

Quelle est la différence d'éclipse entre l'exportation en tant que fichier JAR et l'exportation en tant que fichier JAR exécutable? Ne sont-ils pas tous les deux exécutables? Quels sont les avantages / inconvénients de chacun?

bien en fait
la source

Réponses:

98

Le fichier jar exécutable contient un fichier MANIFEST.MF, qui définit la classe Main à exécuter lorsque le fichier jar est exécuté.

Les fichiers jars non exécutables ne sont que des bibliothèques de classes, qui peuvent être ajoutées au chemin de classe afin que le code soit réutilisé (il contient également le fichier manifeste, mais pas de classe principale)

Bozho
la source
Lorsque nous exportons un fichier sous forme de jar au lieu de jar exécutable, nous devons spécifier la classe principale et le chemin de classe de la bibliothèque dans manifest.mf.
MR ET
20

Un fichier jar exécutable est un fichier jar qui contient un fichier manifeste incorporé qui inclut la déclaration «Main-Class:». La "classe principale" doit être définie pour que le moteur d'exécution Java sache quelle classe appeler lorsque le fichier jar est "exécuté". Si un fichier jar n'inclut pas de manifeste avec la "Main-Class:", il n'est pas considéré comme un "fichier jar exécutable" - 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 pot, mais pas sûr à 100%.

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

Andy White
la source
17

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 fichier jar. Avec un JAR exécutable, il existe un fichier manifeste qui contiendra ces informations afin que vous puissiez simplement taper java -jar myRunnable.jarou simplement double-cliquer dessus.

Eric-Karl
la source
0

Dans mon cas, j'avais l'habitude d'exporter en tant que jar quand j'avais toute la classe principale et tous les répertoires de chemin des bibliothèques spécifiés dans le manifest.mf. Si de nombreuses applications utilisent la même bibliothèque, il n'est pas nécessaire d'exporter la bibliothèque partagée pour chaque fichier jar. Cela accélère le fonctionnement du pot. Mais, souvent en raison d'un problème de configuration dans un chemin de classe de serveur différent, il n'est pas possible d'accéder à la bibliothèque et dans ce cas, il est logique d'exporter le fichier jar exécutable qui rend le fichier lent à exécuter et volumineux.

M. ET
la source