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 :

Lancer un jar éxécutable depuis un dossier différent


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Avatar de romuluslepunk
    Homme Profil pro
    Juste passioné
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Juste passioné

    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Par défaut Lancer un jar éxécutable depuis un dossier différent
    Bonjour,

    J'ai créé un jar exécutable, il fonctionne parfaitement si je le lance depuis le dossier où il se trouve (./monJar.jar sous linux) mais si je me trouve dans un repertoire différent il s'exécute mais ne trouve pas les fichiers dont il a besoin qui sont dans le même dossier que lui.
    Par exemple si je fait dossier1/dossier2/monJar.jar il ne récupérera pas les fichier qui se trouve dans dossier2 (fichier textes et images)

    Comment faire pour que le jar se lance dans son dossier où il se trouve ?
    J'ai essayer de spécifier le dossier avec java -cp "/dossier1/dossier2" -jar "/dossier1/dossier2/monJar.jar" et en remplacant -cp par -classpath mais rien n'y fait.

    merci

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    la solution simple: met toi dans le répertoire avant de lancer le jar, tout simplement. La solution propre: revois tout tes chargement de fichier dans ton code, en ne supposant plus, cette fois-ci, que le répertoire courant sera le même que celi où se trouvera le jar.

  3. #3
    Membre confirmé
    Avatar de romuluslepunk
    Homme Profil pro
    Juste passioné
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Juste passioné

    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Par défaut
    Je vais utiliser la solution propre
    Il faut que je recupere l'emplacement de mon jar lors du chargement des fichier pour recuperer quelque chose du genre "/dossier1/dossier2" et il me suffira d'ajouter le chemin relatif par apport a cet emplacement ?

    Je vais utiliser la methode que j'ai trouver dans la FAQ (http://java.developpez.com/faq/java/...YSTEME_dir_jar) et la retravailler car le fichier jar se trouve dans l'url retournée et j'ai remarque que c'etais le separateur / qui etait utilisé d'office, pour bien il ne faudrai pas utilisé separatorChar de la classe IO.File afin d'assurer la portabilité ?
    Je posterai la methode modifié

    Encore une question qui peut parraitre bête, j'ai teste la methode sur linux et l'url commence par /, parfait donc... mais sur windows, elle commencera bien par la lettre de la partition ?

    merci

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    les url générées à partir de fichiers, sont toujours dans le format acceptable par l'os, afin de garantir qu'elles signfient quelque chose. Sous unix t'aura /...../...../.., sous windows t'aura lecteur:\......\.....\

  5. #5
    Membre confirmé
    Avatar de romuluslepunk
    Homme Profil pro
    Juste passioné
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Juste passioné

    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Par défaut
    Avec le script tel qu'il etait j'avais ceci sur Windows :
    /C:/dossier1/dossier2
    Donc 2 problème:
    - c'est pas le bon séparateur, apparemment c'est "getResource(path)" qui me sort un résultat qu'avec des "/"
    - il y un "/" avant la lettre de partition
    J'ai testé sur XP et vista.
    Sur linux, aucun problème.

    Donc j'ai modifié le code pour régler ces problèmes.
    Il est pas bien different:
    - j'ai utilisé "String.replace" sur le path pour remplacer les "/" par "separatorChar" de la "classe io.File" juste apres "URLDecoder.decode" et réutilisé "separatorChar" a chaque traitement. J'aurai pu utilisé "String.replace" après tous les traitements... sa n'aurais pas changé grand chose...
    - j'ai enleve le 1er caractere si l'os est windows. Par contre je comprend pas d'ou il vient ce "/" (apres ma 1ere modification c'est logiquement devenu un "\"...), si quelqu'un sait je veut bien l'info

    La source est en pièce jointe

    J'ai testé sur Linux, Vista, XP, MacOs X (seulement un fichier class dans un repertoire pour MacOS, j'ai pas reussi à créer un jar depuis MacOs et j'y suis obligé car mon compilateur Linux est plus récent que la JVM MacOs donc j'ai une exception, de toute manière sa devrait aussi bien fonctionner...), dans tous ces cas sa fonctionne parfaitement
    Je n'est plus qu'a integrer cette méthode à mon programme et sa devrai fonctionner. Je passerai en Résolu dès que c'est fait

    Merci
    Fichiers attachés Fichiers attachés

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    de mémoire, si tu fait new File("C:/dossier1/dossier2") en java, y a aucun soucis. Quand au / de début, tu peux le retirer, mais je pense que ca passe aussi avec (j'utilise rarement windows).

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

Discussions similaires

  1. lister les fichiers d'un dossier dans un jar éxécutable
    Par Mageni dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 03/03/2010, 18h08
  2. Lancer un jar depuis un autre
    Par haile dans le forum Débuter avec Java
    Réponses: 0
    Dernier message: 29/12/2009, 12h32
  3. Lancer un jar depuis mon application
    Par Jose.N70 dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 08/07/2009, 12h38
  4. Charger des images de types différents depuis un dossier
    Par bluerequin dans le forum VB.NET
    Réponses: 6
    Dernier message: 25/03/2009, 16h49
  5. Lancer un jar depuis mon programme
    Par jojodu31 dans le forum Langage
    Réponses: 5
    Dernier message: 02/07/2008, 15h49

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