IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Créer un jar Désormais facile


Sujet :

Java

  1. #1
    Membre habitué
    Inscrit en
    Avril 2007
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 521
    Points : 167
    Points
    167
    Par défaut Créer un jar Désormais facile
    Bonjour après s'être débattu souvent sans succès avec les tutos de création de jar voici un plugin assez simple à installer (fatjar)
    1 téléchargez le http://sourceforge.net/projects/fjep/
    2 dézippez sur votre bureau et récupérez le dossier plugins que vous mettez dans votre dossier contenant éclipse mais attention si le dossier eclipse contient déjà un dossier plugins pour x raisons, ne copiez pas le dossier plugins obtenu lors du dézippage ( je sais pas si c'est français ) sinon vous risquez d'écraser celui qui existe déjà. dans ce cas ouvrir le dossier dézippé et copiez collez le fichier .jar qui y est dans le dossier plugins que vous avez trouvé dans éclipse.
    3 fermez éclipse
    4 ouvrez éclipse en ligne de commande avec msdos en utilisant la commande cd nomDuRépertoire qui vous permettra d'accéder au répertoire où se trouve éclipse. ensuite tapez la commande "eclipse -clean" (sans les côtes). Le tour est joué, vous pourrez désormais créer des jar de vos projets avec un clic droit sur le projet puis le Built Fat jar.

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Je déconseille fortement l'utilisation de fatjar.

    Le but de fatjar est de rassembler en un seul jar les classes du projet ainsi que toutes ses dépendances (librairies, etc.). Même si l'idée est séduisante, elle conduit à des fichiers jar très "sales" :

    - on ne distingue plus dans le jar ce qui est propre au projet des dépendances
    - on ne peut plus faire évoluer la version d'une dépendance (librairie) de manière simple
    - etc.

    De plus, cette manière de créer des jars "englobants" peu violer les licences d'utilisation des librairies embarquées.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par CyberChouan Voir le message
    Je déconseille fortement l'utilisation de fatjar.
    +1

    Sans oublier que le jar peut être incompatible avec un déploiement via Java Web Start...



    Alors qu'il suffit de spécifier les dépendances dans l'attribut Class-Path du manifest...

    a++

  4. #4
    Membre habitué
    Inscrit en
    Avril 2007
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 521
    Points : 167
    Points
    167
    Par défaut
    Je ne voyais pas tant d'inconveniants que ça mais sinon on ne peut pas enlever à fatJar la facilité d'installation.

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sebac Voir le message
    on ne peut pas enlever à fatJar la facilité d'installation dans eclipse
    Car dans tous les autres cas il reste plus simple de renseigner le manifest...

    a++

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 245
    Points : 347
    Points
    347
    Par défaut
    Bonjour,
    il suffit d'utiliser Netbeans qui crée automatiquement le jar ^^

  7. #7
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Citation Envoyé par tromaltsec Voir le message
    il suffit d'utiliser Netbeans qui crée automatiquement le jar ^^
    Eclipse créé aussi très bien les jar, sans qu'il y ait besoin d'installer fatjar :
    "Fichier > Exporter > Java > jar"
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  8. #8
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 70
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Alors qu'il suffit de spécifier les dépendances dans l'attribut Class-Path du manifest...
    Quand tu as une dépendance sur axis2 ou tout librairie du même style avec ces 20 jars ou plus y'a de quoi se tirer des balles.

  9. #9
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Citation Envoyé par Orni-Dev Voir le message
    Quand tu as une dépendance sur axis2 ou tout librairie du même style avec ces 20 jars ou plus y'a de quoi se tirer des balles.
    Pour ce genre de cas, plutôt que fatjar, je recommande d'utiliser Maven et son plugin "maven-jar-plugin" gérant l'ajout automatique des librairies du classpath dans le manifest.

    cf. http://maven.apache.org/guides/mini/guide-manifest.html

    Une fois configuré, c'est un vrai bonheur à utiliser et ça a le mérite de faire les choses très proprement.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  10. #10
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par CyberChouan Voir le message
    Pour ce genre de cas, plutôt que fatjar, je recommande d'utiliser Maven et son plugin "maven-jar-plugin" gérant l'ajout automatique des librairies du classpath dans le manifest.
    Il est possible de faire la même chose avec ant...




    Mais de toute manière je ne pense pas que ce soit la mort de taper 20 nom de fichier...

    a++

  11. #11
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 70
    Points : 66
    Points
    66
    Par défaut
    Je viens de regarder pour axis2 c'est 59 jars et franchement la flemme de se les faire tous sans compter que c'est pas la seule qui est utilisée. Par contre si ant est capable de le faire auto ca m'intéresse.

  12. #12
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Je n'ai plus le code exact que j'utilisais sous la main, mais ceci semble correspondre : http://www.developpez.net/forums/m1710953-2/

    a++

  13. #13
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    sinon, sous maven2, puisque déjà signalé, ajouter axis consiste simplement à mettre dans ton pom.xml les dépéndences aux sous projets d'axis2 dont tu as besoin, toutes les autres dépendances vont venir toutes seule.

    PS: il y a beaucoup de jars, c'est vrai dans la distribution d'axis2, mais as-tu besoin de tous? Axis2 est formé de nombreux modules et il est rare d'avoir besoin de tous les modules.

  14. #14
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    59 jars?
    Quand je pense aux développeurs java qui se plaignent de DLL hell quand on parle de .Net...

    Faudrait que j'essaie Maven mais quelque part j'en ai pas le courage, les usines à gaz pleines de fichiers XML partout c'est plus mon truc depuis quelque temps. J'emploie moi aussi fatjar de temps en temps lorsque je veux fournir facilement un module... Toutefois c'est clair qu'en abuser c'est dangereux...

  15. #15
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 70
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Je n'ai plus le code exact que j'utilisais sous la main, mais ceci semble correspondre : http://www.developpez.net/forums/m1710953-2/

    a++
    Merci AdiGuba

    @tchize_ : pour l'instant on reste sur ant meme si a l'avenir on risque de passer sous maven et faudrait que je prenne le temps de regarder quels jars sont indispensables dans mon cas mais le temps est toujours le truc qu'il te manque.

  16. #16
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Oui MAIS, il y a egalement plusieurs raisons qui peuvent rendre un gros JAR plus interressant que plusieurs JARs separes.
    • Souvent les librairies externes sont pas dispo en telechargement JNLP direct sur leur site hote ce qui met un peu en echec le principe de pouvoir partager la lib entre plusieurs applications. De plus pas mal de ces libs ne sont pas signees numeriquement (SwingX, etc...) obligeant a les signer et a les deployer soi-meme :
      • Utiliser le mecanisme des extensions JNLP peut obliger a ecrire ET A MAINTENIR de multiples petits fichiers chacun disposant de ses propres infos dupliquees (serveur hote) et descriptif (indication d'utilisation avec toutes les permissions etc...).
      • Si au contraire chaque JAR est defini en tant que resource du JNLP alors il faut alors re-signer et re-uploader toutes les lib externes a chaque nouvelle signature digitale du JAR principal... donc de toute maniere le client aura a nouveau a re-telecharger la totalite de la distrib...
    • Parfois pour acceder a des ressources contenues dans des JARs externes il faut ecrire son propre ClassLoader.
    • Et enfin une autre raison est que pour le moment le JavaStore ne permet pas d'utiliser plusieurs JARs pour livrer ses apps (que ce soit en extension ou en ressource). D'ou l'apparition chez Sun de cet article qui indique comment faire avec JBuilder 6.7 et Ant :
      http://java.sun.com/developer/techni...se/single_jar/


    Bref le JNLP c'est une bonne idee mais la mise en place est encore bien trop archaique (sans parler du fait qu'au final la signature numerique est plus un frein qu'une aide et qu'on finit souvent par se creer des self-cert soi-meme....)
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  17. #17
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par bouye Voir le message
    Si au contraire chaque JAR est defini en tant que resource du JNLP alors il faut alors re-signer et re-uploader toutes les lib externes a chaque nouvelle signature digitale du JAR principal... donc de toute maniere le client aura a nouveau a re-telecharger la totalite de la distrib...
    C'est vrai ce mensonge? Si le jar principal est resigné avec le même certif que les lib externes, y a pas besoin de resigner les lib externes.
    Parfois pour acceder a des ressources contenues dans des JARs externes il faut ecrire son propre ClassLoader.
    Tu peux montrer un exemple ou t'arrive pas à charger une ressource des tes jar a partir du classloader de jws?

    Bref le JNLP c'est une bonne idee mais la mise en place est encore bien trop archaique (sans parler du fait qu'au final la signature numerique est plus un frein qu'une aide et qu'on finit souvent par se creer des self-cert soi-meme....)
    Tu n'est pas obligé de signer tes applis si tu ne sort pas de la sandbox.

  18. #18
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    C'est vrai ce mensonge? Si le jar principal est resigné avec le même certif que les lib externes, y a pas besoin de resigner les lib externes.
    Suffit d'utiliser les JAR auto-signés par NetBeans pour s'en rendre compte.
    De même avec la routine que je me suis faite pour le déployment de mes app (NetBeans sucks).

    Tu peux montrer un exemple ou t'arrive pas à charger une ressource des tes jar a partir du classloader de jws?
    Je n'ai pas l'exemple sous la main mais je cherchais à extraire un fichier exécutable et ses données depuis un autre JAR (un JAR pour la GUI Java/JavaFX, un JAR contenant le prog natif a exécuter sur la platforme ; le but étant bien sur de pouvoir mettre à jours un package indépendament l'un de l'autre). Impossible d'y accéder sans définir un nouveau ClassLoader.

    Tu n'est pas obligé de signer tes applis si tu ne sort pas de la sandbox.
    Si je signe mes applis.....................

    Quelques soit la solution utilisée, chacune a son avantage EN FONCTION des conditions d'utilisation et de déploiement. Mais toutes restent viables.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  19. #19
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par bouye Voir le message
    Suffit d'utiliser les JAR auto-signés par NetBeans pour s'en rendre compte.
    De même avec la routine que je me suis faite pour le déployment de mes app (NetBeans sucks).
    Ce serait pas netbeans qui recrée un certificat tout neuf à chaque fois? J'ai toujours signé mes jars individuellement sans soucis. Je redéployait que les nécessaire même si mon script resignait tout.

Discussions similaires

  1. [FLASH] Comment créer une bannière flash facilement
    Par achiou59 dans le forum EDI/Outils
    Réponses: 8
    Dernier message: 17/12/2006, 08h03
  2. créer un jar exécutable avec option
    Par _Eric_ dans le forum Langage
    Réponses: 2
    Dernier message: 16/11/2006, 17h09
  3. Créer un jar avec des librairies externes
    Par bart64 dans le forum Langage
    Réponses: 4
    Dernier message: 28/07/2006, 05h37
  4. comment créer un JAR sous eclipse V3.0
    Par LESOLEIL dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 21/03/2006, 10h53
  5. [JAR] comment créer un jar executable?
    Par david06600 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 15/02/2006, 19h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo