web-dev-qa-db-fra.com

Différence entre extraire et empaqueter des bibliothèques dans un fichier jar

Je voudrais connaître la différence entre extraire et empaqueter des bibliothèques dans un fichier jar à partir d'Eclipse avec la création du fichier jar exécutable.

Si mon programme (jar exécutable) utilise d'autres classes qui nécessitent ces bibliothèques externes (jars), que dois-je choisir?

68
ctekk

Si vous souhaitez placer des jars dans votre fichier jar généré, vous pouvez utiliser la méthode de packaging. Par exemple, si vous utilisez une bibliothèque Apache ou d'autres fichiers JAR tiers, vous souhaiterez peut-être conserver ces fichiers JAR dans votre fichier généré. Dans ce cas, utilisez un emballage. L'option "Empaqueter les bibliothèques requises dans un fichier jar" place les classes de org.Eclipse.jdt.internal.jarinjarloader package dans votre fichier généré et ce package est juste sous le répertoire racine du fichier jar généré. Cette option crée également un fichier jar plus volumineux en termes de taille en raison des classes de chargeur de jar d'Eclipse.

L'extraction des bibliothèques requises entraînera la mise en place de classes de bibliothèques tierces dans votre fichier jar en suivant la convention de dénomination du package, par ex. si vous ouvrez le contenu de votre pot, vous pouvez voir certaines classes sous org.Apache.. paquets.

Les entrées de classe principale sont différentes entre les MANIFEST.MF fichiers de ces fichiers jar:

Entrée de la classe principale lorsque vous package bibliothèques requises:

Main-Class: org.Eclipse.jdt.internal.jarinjarloader.JarRsrcLoader

Entrée de la classe principale lorsque vous extrait bibliothèques requises:

Main-Class: YourMainClass
45
Juvanis

Pour mon usage, la principale différence est que emballés les fichiers JAR sont inclus intacts en tant qu'élément distinct, conservant ainsi leurs informations de copyright et leurs données de signature.

Si vous choisissez extraire, les fichiers de classe sont extraits de leur contexte d'origine et stockés comme si vous les aviez créés, ce qui pourrait éventuellement violer certaines conditions de licence, bien que la taille du JAR final soit plus petite dans ce cas. Cas. Eclipse vous avertit également de la licence dans ce cas.

Donc, si vous utilisez des bibliothèques JAR tierces, il est professionnel de toujours package.

1
MikeW

Essayez-le dans les deux sens et ouvrez les fichiers jar résultants avec un programme Zip. Très instructif.

0
bobanahalf