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:
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.
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.
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'
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.
Si vous utilisez Maven, vous devez placer le répertoire
META-INF
sous le dossier/main/resources
au lieu demain/java
.
Référence: Intellij - Nikolay Chashnikov
Ensuite, vous pouvez exécuter le pot exécutable normalement avec java -jar filename.jar