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

Langage Java Discussion :

jar dans jar


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 57
    Par défaut jar dans jar
    Bonjour,

    j'aimerai faire un jar executable.
    Je travaille sous eclipse et j'ai une classe contenant le 'main' et 2 librairies jar.
    Quand je produit mon jar qui contient le tout, je n'arrive pas a l'executer avec la commande java.
    Il faut faire quelquechose de particulier pour integrer les jars au jar ?
    les extraire avant pour les reintegrer dans un seul ?
    je ne sais pas...

    merci de votre aide

  2. #2
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    salut!

    Les jars complémentaires doivent être situés en dehors de ton jar et le fichier manifest du jar doit les référencer via le paramètre Class Path: .

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        Manifest-Version: 1.0
        Created-By: 1.4.2 (Sun Microsystems Inc.)
        Main-Class: classname
        Class-Path: servlet.jar infobus.jar acme/beans.jar
    C'est un peu contraignant, car tu te retrouve à devoir distribuer plusieurs fichiers au lieu d'un seul.

    Cependant il est possible de passer outre cette limitation:

    1) Je vois que tu utilise Eclipse, tu as de la chance, il existe un plugin permettant d'intégrer des jars à l'intérieur d'un jar. Ce plugin se nomme Fat Jar.

    2) Il est également possible de faire cela avec Ant mais là je laisse quelqu'un de plus qualifié que moi sur Ant t'expliquer la démarche parce que j'avoue que je ne m'y connais pas trop en Ant.

  3. #3
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par Descent
    2) Il est également possible de faire cela avec Ant mais là je laisse quelqu'un de plus qualifié que moi sur Ant t'expliquer la démarche parce que j'avoue que je ne m'y connais pas trop en Ant.
    Ant, ou pas Ant d'ailleurs...

    Il suffit d'extraire tes jar "externes" dans des répertoires, et tu intègres ces répertoires au jar de ton appli...

  4. #4
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Oui en faisant une extraction des jars, on peut se passer de Ant.

    Mais si tu veux les garder sous la forme d'un jar, t'es obligé de passer par Ant pour intégrer ces jars externes dans ton jar (ou Fat Jar).

  5. #5
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par Descent
    Mais si tu veux les garder sous la forme d'un jar, t'es obligé de passer par Ant pour intégrer ces jars externes dans ton jar (ou Fat Jar).
    Perso, ce que je fais, je les extrais dans des répertoires, et c'est Ant qui les intègre quand je crée mon JAR...

    Sinon, avec Ant, il extrait lui-même dans un répertoire puis les réassemble dans ton jar, c'est plus long à chaque "jarisation"...

    (à moins qu'une autre technique existe et que je ne connaisse pas)

  6. #6
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Citation Envoyé par ®om
    Perso, ce que je fais, je les extrais dans des répertoires, et c'est Ant qui les intègre quand je crée mon JAR...

    Sinon, avec Ant, il extrait lui-même dans un répertoire puis les réassemble dans ton jar, c'est plus long à chaque "jarisation"...
    OK, merci de cette précision...

  7. #7
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    SAuf que certaines librairies ne permettent pas d'effectuer cette manip suivant leur license.

    Une parade est d'écrire une ClassLoader spécifique qui va te charger les jars contenu dans un jar.

    Dans ton cas je soute que tu sois à même d'écrire une telle classe (moi non plus d'ailleurs pour le moment a moins de me pencher très sérieusement dessus, de quitter la boite et devenir no life pendant un mois). Donc une solution simple est d'utiliser ce qui est par exemple fourni dans le projet One-Jar (utilisé par divers plugins d'IDE)

    http://one-jar.sourceforge.net/

    Mais sinon qu'y a-t'il de mauvais dans le fait de distribuer une archive contenant un jar principal, celui de ton appli et plein de jars dans un rep lib. De cette façon la mise à jour d'un bibliothèque n'impose pas de changer le jar en lui même, et en maintenance c'est tout de même plus propre

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 57
    Par défaut
    je m'attendais pas a lire tout ça ce matin: seulement 1 ou 2 reponses.
    Mais la, tout une discussion !

    merci beaucoup les gars.

  9. #9
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    pitié pour la mémoire et les caches!
    au contraire faire exploser des parties très distinctes d'une application en un jar maître et des jars distincts (jar-indexés dans le jar maître) me semble une stratégie meilleure que des super-jars...
    enfin pour ce que j'en dis ....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 04/03/2013, 15h45
  2. Problème de drivers classe12.jar ojdbc14.jar dans WEB-INF/lib
    Par Invité dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 16/08/2011, 16h15
  3. [Jar] Jar dans un jar
    Par calypso dans le forum Général Java
    Réponses: 10
    Dernier message: 07/07/2005, 14h23
  4. [plugin] [jar] ajouter un jar dans un plugin
    Par Mobius dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 01/06/2005, 10h44
  5. les jars dans l'arborescence
    Par freddyboy dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 12/01/2004, 10h38

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