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 :

[Classpath][execution] executer un programme avec des jar.


Sujet :

Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 35
    Points : 31
    Points
    31
    Par défaut [Classpath][execution] executer un programme avec des jar.
    Bonjour,
    Je voudrais executer mon programme en l'appelant depuis un fichier bat (sous windows). Mon programme fait appel à 3 jars qui lui permettent de se connecter à une base de données et à créer des graphismes.
    Mais je ne connais pas la syntaxe à employer.
    J'executer mon programme avec la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java c:\cheminAcces\MonProgramme
    Comment ajouter les jar à l'execution? avec Si oui comment s'utilise classpath pour ajouter plusieurs path?
    Pour info, les jars sont dans le même répertoire que mes .class
    Si vous pouvez me donner des infos ou me rediriger vers l'info, merci d'avance. bonne journée.[/code]

  2. #2
    Membre actif Avatar de snoop
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 354
    Points : 294
    Points
    294
    Par défaut
    Bonjour,

    Compiler l'ensemble de tes classes/jar avec la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    javac -classpath cheminDuJar1:cheminDuJar2 monProg.java

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 35
    Points : 31
    Points
    31
    Par défaut
    Je croyais que mon programme était déjà compilé avec les jars car j'ai développé mon programme sous eclipse donc j'ai du importer les jar pour compiler.
    Je vais réessayer en compilant à la main alors.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 46
    Points : 56
    Points
    56
    Par défaut
    Quand tu compiles, ca n'inclue pas les classes externes. Ca vérifie juste les liens vers ces classes.
    D'où le besoin de pointer ces jars à la compil ET à l'exéc.
    Et pour pointer ces jars, il faut passer par le classpath
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    set HOME=.
    set LIB=%HOME%\lib
    set BUILD=%HOME%\classes
     
    set CP=%BUILD%
     
    set CP=%CP%;%LIB%\xerces.jar
    set CP=%CP%;%LIB%\xalan.jar
    set CP=%CP%;%LIB%\jdom.jar
    set CP=%CP%;%LIB%\jakarta-oro-2.0.4.jar
    set CP=%CP%;classes
     
    %JAVA_HOME%/java MaClasse -classpath %CP% etc....

  5. #5
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 814
    Points : 7 642
    Points
    7 642
    Par défaut Re: [execution] executer un programme avec des jar.
    Citation Envoyé par LoLoSS
    Bonjour,
    Je voudrais executer mon programme en l'appelant depuis un fichier bat (sous windows). Mon programme fait appel à 3 jars qui lui permettent de se connecter à une base de données et à créer des graphismes.
    Mais je ne connais pas la syntaxe à employer.
    J'executer mon programme avec la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java c:\cheminAcces\MonProgramme
    Si tu lançais ton programme de cette manière, sans devoir préciser où étais tes jar, tu as juste à recopier cette ligne dans ton fichier .bat, enregistrer, et double-cliquer. Ca devrait tourner.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 35
    Points : 31
    Points
    31
    Par défaut
    Bonjour,

    Déjà merci pour vos réponses.

    Pour répondre à Plegat, je me suis mal exprimé car quand je lance mon programme avec la commande java, c'est là où j'ai un message d'erreur me disant qu'il manque le driver MySQL. Mon programme ne fonctionne que lorsque je l'execute sous eclipse.

    Est ce que JefDeBourges pourrait me préciser le code qu'il m'a donnée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    set HOME=. 
    set LIB=%HOME%\lib 
    set BUILD=%HOME%\classes 
     
    set CP=%BUILD% 
     
    set CP=%CP%;%LIB%\xerces.jar 
    set CP=%CP%;%LIB%\xalan.jar 
    set CP=%CP%;%LIB%\jdom.jar 
    set CP=%CP%;%LIB%\jakarta-oro-2.0.4.jar 
    set CP=%CP%;classes 
     
    %JAVA_HOME%/java MaClasse -classpath %CP% etc....
    Je dois insérer ce code dans ma classe contenant le main? à quel endroit?
    A quoi correspondent HOME, BUILD, LIB et CP?

    Si vous pouvez m'apporter c'est précision, merci beaucoup

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 46
    Points : 56
    Points
    56
    Par défaut
    C'est un extrait d'un fichier de commande.
    Typiquement un go.bat

    Il définit des variables
    HOME C'est la racine du projet. Ici c'est au même endroit que le fichier de commande.
    LIB C'est là où sont stockés mes jars
    BUILD C'est là où sont compilées mes classes java
    CP C'est le fameux classpath. Que je construis en mettant mes jars (ici xerces, xalan, jdom etc...) et en y ajoutant les classes compilées (ce qui avec le recul est inutile car elles y étaient déjà en début de classpath via la variable BUILD voilà que je débuggue mes examples ).

    Ensuite je lance la commande java pour exécuter ma classe
    Je m'appuie sur la variable JAVA_HOME qui pointe sur mon jdk (c:\jdkx.x\bin par exemple)

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 35
    Points : 31
    Points
    31
    Par défaut
    J'ai une erreur dans l'execution de mon programme et je pense qu'il ne s'agit pas de grand chose!
    Voici d'abord l'arborescense de mon programme:
    mes jar sont dans le dossier lib
    mes class sont dans le dossier classes
    ma classe contenant le main (LogWan) est aussi dans le dossier classes

    voici le fichier bat que j'ai fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    set HOME=.
    set LIB=%HOME%\lib
    set BUILD=%HOME%\classes
     
    set CP=%BUILD%
     
    set CP=%CP%;%LIB%\mysql-connector-java-2_0_14-bin.jar
    set CP=%CP%;%LIB%\jfreechart-0.9.16.jar
    set CP=%CP%;%LIB%\jcommon-0.9.1.jar
     
    java LogWan -classpath %CP%
    pause
    J'ai mis ce fichier bat à la racine de mes dossier lib et classes.

    que je mette la commande java suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java LogWan -classpath %CP%
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java %BUILD%\LogWan -classpath %CP%
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java classes\LogWan -classpath %CP%
    J'ai l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception in Thread "main" java.lang.NoClassDefFoundError
    Si vous pouvez me donner un coup de main. merci

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 46
    Points : 56
    Points
    56
    Par défaut
    Il manque des choses au classpath...
    Dans le stack trace (ce qui suit le message d'erreur) tu dois avoir le nom de la classe manquante ou au pire le n° de ligne impliquée.
    Ca doit correspondre à un new() ou à l'appel d'une méthode statique.

    Et cette classe n'est pas au classpath...
    Bonne chasse ;-)

  10. #10
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 35
    Points : 31
    Points
    31
    Par défaut
    J'ai fais plusieurs essais, à chaque fois que j'execute mon programme, j'ai un NoClasseDefFoundError qui correspond aux classes qui sont dans mes jar!
    J'ai fais different essais en commentant certaines lignes de mon programme et dès que l'execution arrive sur une ligne qui appel une classe contenu dans les jar, j'ai une erreur NoClasseDefFoundError !
    Comme si l'execution ne prennais pas en compte le classpath alors que en mettant pause à la fin de mon fichier bat, je constate que les differents jar sont bien ajouté à la variable %CP%.
    Si vous avez une idée sur mon problème... Merci

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 46
    Points : 56
    Points
    56
    Par défaut
    Au cas où ton répertoire courant aurais des noms longs windows, tu devrait mettre des quotes autour de %CP%
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -classpath "%CP%" fr.moi.MaClasse

  12. #12
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 35
    Points : 31
    Points
    31
    Par défaut
    Ca y est ca marche!
    J'ai d'abord ajouter des doubles cote à ma variable classpath:
    "%CP%"
    Cela ne fonctionner toujours pas, j'ai ensuite inversé l'odre dans ma commande java:
    j'ai donc inversé:
    java MaClasse -classpath "%CP%"
    par
    java -classpath "%CP%" MaClasse
    Maintenant ca fonctionne très bien!
    Merci beaucoup pour votre aide et votre patience.
    laurent

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

Discussions similaires

  1. [PHP 5.3] executer un programme avec des parametres
    Par fab22 dans le forum Langage
    Réponses: 8
    Dernier message: 04/05/2012, 17h54
  2. Réponses: 6
    Dernier message: 27/07/2007, 18h38
  3. Réponses: 1
    Dernier message: 14/06/2007, 16h28
  4. Réponses: 8
    Dernier message: 19/12/2006, 23h55
  5. execution d'un prog avec des fichiers multi-class
    Par Ice-B dans le forum Général Java
    Réponses: 2
    Dernier message: 05/08/2004, 11h43

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