Comment puis-je créer un JAR runnable dans IntelliJ comme je le ferais dans Eclipse

Mon processus pour créer un JAR exécutable à partir d'un projet avec de nombreuses bibliothèques avec Eclipse a été.

Exporter > JAR exécutable > sélectionnez Lancer la configuration > bibliothèques requises par le Package dans jar généré > terminer

Cela crée un seul 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 sauf pour la construction de mes pots qui m'oblige à revenir en arrière pour éclipser Temporairement.

Avec IntelliJ I:

Ouvrez Project Structure > Artifacts et créez un nouveau JAR à partir de modules avec des dépendances. J'ai ensuite ma mise en page de sortie avec le nom du pot, une méta-INF à l'intérieur et tous mes libaries avec le 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 est environ 15MB plus grand) et le FTP sur mon serveur, essayez de l'exécuter et j'obtiens l'erreur:

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?

Modifier

Les deux pots créés diffèrent considérablement:

Le pot valide créé par Eclipse ressemble à ceci: Bon pot

Alors que l'invalide .JAR ressemble à ceci: Mauvais jar

22
demandé sur Nanor 2017-01-19 18:53:43

4 réponses

Vous êtes confronté à deux problèmes, l'un semble majeur et l'autre est mineur:

  • Major: exception de signature
  • Minor: La Taille du jar est supérieure de 15 Mo à celle du jar produit par eclipse.

La solution des deux problèmes réside dans la façon dont vous construisez l'artefact. Tout d'abord, supprimez tous les extracted *.jar puis ajoutez tous les jar du panoramique éléments disponibles comme indiqué sur la figure.

Capture d'écran des dépendances

Il est évident que l'ajout de pots emballés(compressés) seulement, diminuera la taille. Mais cela résout également le problème de la signature. Pour plus d'explications, veuillez consulter cet article . Je vais seulement citer une seule ligne.

Il est probablement préférable de garder le pot officiel tel quel et de l'ajouter en tant que dépendance dans le fichier manifeste......

Il semble que certaines dépendances soient signées et que le reconditionnement gâche la méta-INF de votre projet.

8
répondu 2017-05-08 19:22:33

Vous pouvez suivre ces étapes:

1) Fichier - > Structure du projet -> Paramètres du projet -> artefacts -> Jar - > à partir de modules avec des dépendances

2) Cochez la case Inclure dans la construction du projet.

3) Cliquez avec le bouton droit de la souris sur module - > construire le module 'ModuleName'

1
répondu Kirill 2018-06-06 13:18:25

Vous pouvez essayer d'utiliser un script gradle. eclipse vous fera un projet gradle. vous pouvez utiliser ce fichier de construction avec n'importe quel ide. il a une tâche de pot intégrée.

0
répondu Ray Tayek 2017-05-06 09:02:17

Si vous utilisez Maven, vous devez placer le répertoire META-INF sous le dossier /main/resources au lieu de main/java.

Référence: Intellij - Nikolay Chashnikov

Ensuite, vous pouvez exécuter le pot exécutable normalement avec java -jar filename.jar

0
répondu another 2017-10-22 20:51:50