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 intégrant un JAR


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 56
    Par défaut Compilation intégrant un JAR
    Bonjour à tous!
    Jusqu'à présent j'utilisais Eclipse et tout allait bien, mais lorsque j'ai voulu faire un JAR exécutable je me suis un peu paumé et rien ne fonctionne, je me suis donc décidé à vraiment comprendre comment fonctionne la compilation et les dépendances entre les classes, librairies, etc.... et tout faire manuellement pour avoir mon JAR. Mais je commence graduellement, pour l'instant je cherche juste à compiler et lancer mon programme en ligne de commande.

    Voici la structure de mon projet :


    Ses particularités :
    - j'ai intégré la librairie pour gérer une base de données H2. J'avais fait clic droit sur le projet->Build path->Add external JAR.
    - j'utilise des icônes qui sont stockées dans "ressources/images"

    Pour ma compilation, je me place dans la répertoire src et je tape :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    F:\JAVA Eclipse\CollPhil - Copie\src>javac -cp .;ressources/h2-1.3.161.jar -d ../bin launcher/Launcher.java
    Déjà ce que je trouve bizzare c'est qu'il ne copie pas la librairie H2 dans le répertoire bin. Forcément lorsque je lance avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    F:\JAVA Eclipse\CollPhil - Copie\src>java -cp ../bin launcher/Launcher
    Il me met un message d'erreur de chargement des pilotes de la base de données H2. Pour info voici le code correspondant au chargement des drivers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public FenetrePrincipale() {
    		String nomDriver = "org.h2.Driver";
     
    		// Chargement du driver JDBC pour MySQL
    		try{
    		    Class.forName(nomDriver); 
    		}catch(ClassNotFoundException cnfe){
    			JOptionPane.showMessageDialog(null, "La classe "+nomDriver+" n'a pas été trouvée", "Erreur de chargement de driver de base de données", JOptionPane.ERROR_MESSAGE);
    		}
    Cependant quand je lance directement à partir d'Eclipse tout marche nickel donc le code est bon depuis le début. Mais pour ma compilation je ne vois pas quoi faire d'autres qu'indiquer le JAR dans le classpath....

    Liiloouuu... Heellppp... pleeeaaaaaase....

    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 56
    Par défaut
    Et bien je n'arrive toujours pas à compiler manuellement et à faire en sorte que quand je lance mon programme "CollPhil.jar" il trouve la base de données.

    Cependant j'ai réussi à trouver une alternative avec Eclipse pour créer directement le JAR. Dans tous les tutos que j'ai vu ils disent de faire clic-droit sur le projet -> Export -> JAR File, mais mais quand je passe par là et que je lance le JAR il me dit que la base de données est introuvable.

    Du coup à la place de "JAR File" j'ai testé "Runnable JAR File" et là ça fonctionne. Bon c'est déjà une bonne chose j'arriverai peut être à finaliser mon programme jusqu'au bout, mais c'est pas le top de pas savoir compiler et créer un JAR manuellement, et d'être surtout dépendant d'Eclipse.... :/

    Je laisse encore un peu non résolu si quelqu'un passe et a une idée de pourquoi ma ligne de commande pour la compilation n'est pas bonne, je fermerai dans quelques jours en cas

  3. #3
    Membre émérite Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Par défaut
    c'est pas le top de pas savoir compiler et créer un JAR manuellement, et d'être surtout dépendant d'Eclipse
    Euh, ça sert à quoi de savoir compiler et créer un JAR manuellement ? De toutes façons, si tu n'utilises pas d'IDE la complexité maximale du code est inférieure à ce que tu peux gérer avec un IDE, donc à partir d'une certaine importance, tu es forcément dépendant d'un IDE... Mais je ne vois pas en quoi c'est un problème...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 56
    Par défaut
    [HS] Mes motivations sont purement personnelles, même pas forcément à titre utile. Déjà c'est de la curiosté et c'est ce qui m'a permis d'être pluridisciplinaire aujourd'hui. Aussi car ça permet d'en apprendre beaucoup plus sur le sujet qui nous intéresse que de simplement se borner à l'aspect concret des choses. Et enfin parce que je considère qu'un bon programmeur n'est pas celui qui va simplement faire quelque chose mais celui qui va comprendre ce qu'il fait jusque dans les moindres détails.
    Quand je me suis mis à l'ordinateur au tout début j'ai voulu comprendre réellement comment fonctionnait un ordinateur, comment est géré la mémoire etc... ça ne m'a servi à rien sur le moment, mais je me suis aperçu que ça m'a vraiment beaucoup aidé par la suite. Bref tout ça pour dire que j'ai toujours soif de connaissances quelle qu'elles soient et qu'il ne faut pas se fermer à sa simple fonction mais toujours évoluer, c'est ce qui permet d'avancer et de grimper dans la vie ^^ [/HS]

  5. #5
    Membre émérite Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Par défaut
    Mais alors, pourquoi ne pas compiler à la main aussi ? Sinon, tu es dépendant de javac... Ah mais de toutes façons, après tu es dépendant de la JVM...

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 333
    Par défaut
    Cependant j'ai réussi à trouver une alternative avec Eclipse pour créer directement le JAR. Dans tous les tutos que j'ai vu ils disent de faire clic-droit sur le projet -> Export -> JAR File, mais mais quand je passe par là et que je lance le JAR il me dit que la base de données est introuvable.
    Quel est le message exact ?

    Cependant quand je lance directement à partir d'Eclipse tout marche nickel donc le code est bon depuis le début. Mais pour ma compilation je ne vois pas quoi faire d'autres qu'indiquer le JAR dans le classpath....
    C'est normal il faut effectivement indiquer les librairies nécessaires à la compilation. Tu as tout juste jusque là.

    Par contre il faut également préciser le classpath pour ton exécution (commande java)

    Il faut bien distinguer 2 choses :
    - la compilation de tes sources (te permet de créer ton jar)
    - la construction de ton application (produit "quelque chose" d'exécutable en standalone (sous réserve de jvm ) ) (tu peux regarder ant par exemple)

    Le plus simple est de copier les jars nécessaires dans ton dossier bin
    Un peu mieux est de "packager ta livraison" avec un .bat et .sh pour lancer ton programme sous tes différents environnements.


    Euh, ça sert à quoi de savoir compiler et créer un JAR manuellement ? De toutes façons, si tu n'utilises pas d'IDE la complexité maximale du code est inférieure à ce que tu peux gérer avec un IDE, donc à partir d'une certaine importance, tu es forcément dépendant d'un IDE... Mais je ne vois pas en quoi c'est un problème...
    Il est vrais qu'à partir d'une certaine taille, il est difficile de se passer d'un outil, mais c'est toujours bien de mettre de temps en temps les mains dans le cambouis.

    Il est très intéressant de construire l'application indépendamment de l'IDE (dans un cadre industriel):
    - permet aux différents dev de choisir leurs IDE (ex : projet open source...)
    - permet de décloisonner les processus (livraison, test ...) du développement, si on a une plateforme indépendante, ça permet de mettre en place une véritable usine logicielle automatisée (compilation de nuit, tests unitaires,fonctionnels perf ...)
    - utilisation "d'outils fait pour ça" : hudson/jenkins, ant,maven, gradle ...

    Il y aurait beaucoup à dire, mais bon la je suis un beaucoup hors sujet

  7. #7
    Membre émérite Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Par défaut
    Nan, d'accord, mais quand on débute c'est pas le plus urgent... En gros, être programmeur, c'est aussi passer du temps à se former, mais en gérant les priorités...

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 56
    Par défaut
    Merci LittleBean de toutes ces précisions, ça m'a permis de voir un peu plus clair donc je reprends depuis le début, peut être que ça sera plus facile de m'orienter.

    Du coup je vais prendre les choses dans l'ordre. Déjà j'ai simplifié ma structure pour les tests, un seul package "bin" regroupant toutes les sources .java, répertoire "lib" contenant le JAR nécessaire et "ressources" contenant mes images.



    Première chose : Je pense m'être rendu compte que pour la compilation, rien ne sert d'indiquer les librairies JAR et ressources nécessaires car elles ne sont pas prises en compte. J'ai fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    javac -cp .;./ressources/*;./lib/h2.1.3.161.jar -d ../bin bin/Launcher.java
    mais cela ne compile que les .java pour me donner les .class, et omet complètement le JAR. Ce qui veut dire que ma librairie et mes images vont manquer quand je vais lancer avec "java". Comme tu m'as dit je peux mettre ma librairie dans le répertoire "bin" mais je ne pense pas que ce soit normal de le faire manuellement, il doit pouvoir être possible de tout intégrer en jouant peut être sur les différentes options :
    -cp <path> Specify where to find user class files and annotation processors
    -sourcepath <path> Specify where to find input source files
    -bootclasspath <path> Override location of bootstrap class files
    -extdirs <dirs> Override location of installed extensions
    -endorseddirs <dirs> Override location of endorsed standards path
    -s <directory> Specify where to place generated source files

    Pour résumer : quelle option de "javac" dois-je utiliser pour prendre en compte à la fois le JAR nécessaire et mes ressources (images) ?
    (je sais je m'obstine, mais c'est parce que je trouve qu'il n'y a rien de plus énervant que de savoir quelque chose possible mais de ne pas savoir le faire... ^^)

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

Discussions similaires

  1. Compilation javac avec .jar
    Par carton99 dans le forum Débuter avec Java
    Réponses: 11
    Dernier message: 23/05/2013, 18h00
  2. Problème compilation d'un jar
    Par jchevalay54 dans le forum Débuter
    Réponses: 12
    Dernier message: 10/09/2012, 11h14
  3. Compilation d'un .jar avec Eclipse
    Par 0coco0 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 23/03/2009, 08h18
  4. [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
  5. [JAR]Probleme compilation avec jdom
    Par ronaldgis dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 04/08/2004, 11h31

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