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

avec Java Discussion :

Compilation et JAR


Sujet :

avec Java

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 152
    Points : 94
    Points
    94
    Par défaut Compilation et JAR
    Bonjour à tous,

    J'ai créé un projet dans Eclipse et configuré le Build path pour inclure un deuxième projet dont certains packages et classes (pas la totalité) sont nécessaires au projet principal.

    Lors de l'exportation du fichier .jar exécutable (menu Export.../Java/Runnable JAR file), la totalité des packages et classes de mon projet inclus sont exportés. Ce qui en résulte que le fichier final est très volumineux. Y a t'il une façon de faire pour inclure uniquement les classes et packages utilisés dans mon projet et pas la totalité ?

    Merci d'avance pour votre aide !
    </aliasjcdenton>

    "Un Homme devient vieux lorsque ses regrets prennent la place de ses rêves"

  2. #2
    Membre émérite
    Avatar de olivier.pitton
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2012
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 355
    Points : 2 814
    Points
    2 814
    Par défaut
    Si tu ne veux exporter que certaines classes de ton sous-projet, cela veut dire qu'ils possèdent des classes inutiles, puisque pas utilisées.

    Logiquement, tu es censé utiliser toutes les classes que tu crées à différents endroits de ton programme, donc tu as une dépendance sur ces classes. Si une telle dépendance n'existe pas, c'est donc bel et bien que tu possèdes des classes inutiles. Et que tu peux supprimer.

    Une solution serait de scinder ton second projet en plusieurs sous-projets et de n'importer que ceux que tu utilises, mais il faut être sur pour cela que tu puisses découper un projet en deux, sans aucunes dépendances entre les deux.

    Ton objectif est de couper les dépendances entre les classes pour créer des sous-projets Eclipse que tu peux importer librement. Ainsi, tu pourras réduire la taille de ton JAR.

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 152
    Points : 94
    Points
    94
    Par défaut
    Merci pour ta réponse.

    Mais je crois que je me suis mal exprimé.

    En fait, mon second projet (sous-projet inclus) est une sorte de « librairie » de composants graphiques (Swing) que j'ai créé et dont je peux me servir à souhait dans différents projets.

    Ce que je souhaite, c'est n'inclure dans le fichier .jar exécutable uniquement les classes des composants graphiques utilisés dans mon application et pas toutes puisqu'une grande partie ne sont pas utilisées dans le projet en question.

    N'y aurait-il pas un « compilateur » qui n'inclurait que les classes utilisées (et leurs dépendances correspondantes) en laissant de côté toutes les classes inutilisées ?

    Ainsi, pas besoin de découper ma librairie lorsque je souhaite l'utiliser dans un projet...
    </aliasjcdenton>

    "Un Homme devient vieux lorsque ses regrets prennent la place de ses rêves"

  4. #4
    Membre émérite
    Avatar de olivier.pitton
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2012
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 355
    Points : 2 814
    Points
    2 814
    Par défaut
    Le plus simple pour la gestion de dépendances entre projets est d'utiliser un outil comme Apache Maven.

    En soit, tu peux compiler ce que tu veux à la main, et choisir de n'exporter que ce que tu souhaites. Maintenant, avec des IDE, cela devient plus "compliqué". Si tu utilises Eclipse, qui par défaut compile tout automatiquement, tu peux désactiver cette option dans "Project", si je me souviens bien. Puis compiler l'ensemble de ta bibliothèque, et n'inclure que les fichiers que tu désires.

    Le problème vient du fait que tu utilises un IDE. Soit tu peux créer un nouveau sous-projet pour splitter ta lib, soit tu n'inclus, à la main, que les classes que tu désires dans ton JAR.

    Personnellement, je ne vois pas d'autres solutions.

  5. #5
    Membre régulier
    Inscrit en
    Décembre 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 152
    Points : 94
    Points
    94
    Par défaut
    Je vais me pencher sur Maven, souvent entendu parler mais jamais essayé. Pour le moment, j'utilise Ant mais sans en connaître tous les rouages.

    J'utilise en effet Eclipse. Mais je ne vois pas vraiment que tu entends par "compiler l'ensemble de ta bibliothèque, et n'inclure que les fichiers que tu désires". Comment fais-tu ? Je devrais normalement obtenir un .jar contenant la totalité de la bibliothèque, non ? Dois-je supprimer mon sous-projet de l'onglet "Projects" du Build path ? Et où dois-je spécifier les classes à inclure lors de la compilation ?

    Merci d'avance pour ta réponse !
    </aliasjcdenton>

    "Un Homme devient vieux lorsque ses regrets prennent la place de ses rêves"

  6. #6
    Membre régulier
    Inscrit en
    Décembre 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 152
    Points : 94
    Points
    94
    Par défaut
    Je commence finalement à mettre la main à Maven en remplacement de Ant. Je vais voir...

    Sinon, il semblerait aussi qu'un obfuscateur tel que Proguard ne conserve que les classes utilisées et non la totalité de la librairie.
    </aliasjcdenton>

    "Un Homme devient vieux lorsque ses regrets prennent la place de ses rêves"

Discussions similaires

  1. [WSAD] Chemin de compilation > Ajouter JAR
    Par jadey dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 09/03/2011, 21h22
  2. Compilation avec jar ovh
    Par benwit dans le forum GWT et Vaadin
    Réponses: 5
    Dernier message: 29/01/2010, 23h04
  3. Réponses: 2
    Dernier message: 01/10/2008, 10h15
  4. [JOGL] Compiler un JAR indépendant des dll
    Par Clilmbatize dans le forum Moteurs 3D
    Réponses: 5
    Dernier message: 16/03/2007, 14h44
  5. [JAR]créer une compilation de jar
    Par biozaxx dans le forum Général Java
    Réponses: 8
    Dernier message: 05/10/2005, 11h08

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