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 :

Indiquer un classpath quand on exécute un jar en ligne de commande


Sujet :

avec Java

  1. #1
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 63
    Points : 45
    Points
    45
    Par défaut Indiquer un classpath quand on exécute un jar en ligne de commande
    Salut à tous,

    Je reposte ici parce qu'en fait c'est ça le bon forum je pense.

    J'ai fait un .jar, qui à un moment lit des données dans un fichier de configuration (inclus dans le .jar). J'ai appris qu'il était possible de copier ce fichier en dehors du .jar, et si je l'indique dans le classpath avant d'exécuter le .jar, il lira dans celui-ci plutôt que dans celui inclus dans le .jar...

    Mais comment puis-je modifier le classpath de manière à obtenir le résultat svp ?

    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -classpath ./ -jar patcheur.jar
    Mais ça ne marche pas :s

    Merci d'avance !

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    L'option "-jar" est prioritaire sur "-classpath". N'utilise pas l'option "-jar". Essaie ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -classpath chemin/repertoire/fichier/conf:chemin/vers/mon/jar/toto.jar MaClassMain
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 63
    Points : 45
    Points
    45
    Par défaut
    Merci pour ta réponse. J'ai donc essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -classpath ./configPatcheur.properties:patcheur.jar Patcheur -xdebug.xml
    et ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -classpath ./:patcheur.jar Patcheur -xdebug.xml
    Mais il lit toujours le fichier de propriété qui est dans le jar :s

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Essaie aussi sans le slash pour le répertoire du fichier de config :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -classpath .:patcheur.jar Patcheur -xdebug.xml
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 63
    Points : 45
    Points
    45
    Par défaut
    Même résultat, il lit toujours le config du jar :'(

    En gros le fichier de config contient les infos d'une base de données. Pour tester, je mets de fausses informations dans le fichier de config situé à l'extérieur du .jar, pour qu'il ne puisse pas se connecter. Mais il y arrive toujours

  6. #6
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Une dernière idée : met le fichier de config dans un jar, puis met le jar en premier dans le classpath. Met le ensuite en second.
    Après ça, tu peux toujours faire ton propre ClassLoader. Tu n'as que quelques dizaines de lignes à écrire.
    Sinon, tu peux également supprimer le fichier de config situé dans le jar. Un jar est un simple zip. Tu peux l'ouvrir avec 7-zip (gratuit).
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  7. #7
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 63
    Points : 45
    Points
    45
    Par défaut
    Le truc c'est que j'aimerais le sortir de tout .jar pour qu'on puisse l'éditer :s

    Et j'ai déjà essayé de supprimer le fichier du .jar et de retester, mais ça marche pas il trouve plus de fichier :s

  8. #8
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Dans le source, quel est le moyen utilisé pour lire le fichier de conf ?
    Il va peut-être être nécessaire d'adapter le code.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  9. #9
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 63
    Points : 45
    Points
    45
    Par défaut
    Oui c'est ce que je me suis dit... Avant je faisais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reader = new BufferedReader(new InputStreamReader(PatcheurUtilities.class.getResourceAsStream("configPatcheur.properties")));
    Maintenant j'essaie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ResourceBundle rbMsg = ResourceBundle.getBundle("configPatcheur");
    Edit : Comme ça ça marche ! merci

    Edit 2 : Et pour que les deux marchent, je fais le deuxième et si je catch un MissingResourceException, je fais le premier :p

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

Discussions similaires

  1. exécution jar en ligne de commande
    Par maxwell374 dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 14/04/2011, 16h05
  2. les images ne s'affichent pas quand j'exécute le JAR
    Par aroussi_sanaa dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 09/09/2009, 16h34
  3. exécuter un .jar en ligne de commande
    Par chebmo1986 dans le forum Langage
    Réponses: 2
    Dernier message: 09/04/2009, 14h19
  4. exécuter un programme en ligne de commande
    Par karamasov dans le forum Général Java
    Réponses: 8
    Dernier message: 17/09/2008, 16h52
  5. Réponses: 0
    Dernier message: 29/04/2008, 17h19

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