Mon processus de création d’un fichier JAR exécutable à partir d’un projet comportant de nombreuses bibliothèques avec Eclipse a été suivi.
Exporter> JAR exécutable> Sélectionner la configuration de lancement> Intégrer les bibliothèques requises dans le JAR généré> Terminer
Cela crée un seul fichier JAR dans ma destination d'exportation que je FTP sur mon serveur et fonctionne bien.
Je suis récemment passé à IntelliJ pour diverses raisons et cela a été une amélioration dans tous les cas, à l'exception de la construction de mes fichiers JAR, ce qui m'oblige à retourner temporairement à Eclipse.
Avec IntelliJ I:
Ouvrez la structure de projet> Artefacts et créez un nouveau fichier JAR à partir de modules avec dépendances. J'ai alors ma mise en page de sortie avec le nom du fichier JAR, un META-INF à l'intérieur et toutes mes bibliothèques au format Extracted <lib.jar/>
_ (désolé, je ne peux pas télécharger de captures d'écran sur ce VPN.)
Je construis mon artefact (qui fait environ 15 Mo de plus) et le transfère sur mon serveur, essaie de l'exécuter et j'obtiens l'erreur suivante:
Exception in thread "main" Java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
Comment puis-je imiter comment je le fais dans Eclipse?
[~ # ~] éditer [~ # ~]
Les deux JAR créés diffèrent considérablement:
Le fichier jar valide créé par Eclipse se présente comme suit:
Vous faites face à deux problèmes, l'un semble majeur et l'autre mineur:
La solution de ces deux problèmes réside dans la manière dont vous construisez l'artefact. Tout d’abord, supprimez tous les extracted *.jar
puis ajoutez tous les pots parmi les éléments disponibles comme indiqué sur la figure.
Il est évident que l’ajout de bocaux compressés (compressés) diminuera la taille. Mais cela résout également le problème de la signature. Pour plus d'explications, jetez un coup d'œil à ceci article . Je ne citerai qu'une ligne.
Il est probablement préférable de garder le pot officiel en l'état et de simplement l'ajouter en tant que dépendance dans le fichier manifeste ......
Il semble que certaines des dépendances soient signées et que le reconditionnement fausse le META-INF de votre projet.
Si vous utilisez Maven, vous devez placer le répertoire
META-INF
Dans le dossier/main/resources
Au lieu demain/Java
.
Référence: Intellij - Nikolay Chashnikov
Ensuite, vous pouvez exécuter le jar exécutable normalement avec Java -jar filename.jar
Vous pouvez ces étapes:
1) Fichier -> Structure du projet -> Paramètres du projet -> Artefacts -> Jarre -> À partir de modules avec dépendances
2) Cochez la case Inclure dans la construction du projet.
3) Faites un clic droit sur le module -> construire le module 'NomModule'