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

Langage Java Discussion :

Chemin relatif ou absolu des fichiers accédés par application Java


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    C++, Java
    Inscrit en
    Juillet 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : C++, Java
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 52
    Par défaut Chemin relatif ou absolu des fichiers accédés par application Java
    Bonjour,

    J'ai une application Java avec interface graphique qui fonctionnait sans anomalie jusqu'à ce que je passe sur mon poste à la version Java 1.8.0_192-b12.
    Après analyse, j'ai trouvé quelle était l'origine de mon anomalie, mais je n'arrive pas à la corriger.

    Mon application commence en tout premier lieu par accéder à un fichier paramètre .xml qui se trouve dans le répertoire d'installation de l'appli, le même répertoire que le .jar, tout simplement de la manière suivante :

    Le chemin du fichier était donc en relatif et pas en absolu.

    Jusqu'à présent, l'accès au fichier se faisait sans anomalie, mais avec la nouvelle version Java, l'application cherche le fichier non pas dans le répertoire où se trouve le .jar que j'exécute, mais dans le répertoire où est positionné l'utilisateur qui exécute l'application.

    Or mon application accède plus loin dans le code à d'autres fichiers (des images pour l'interface graphique, entre autres), dont le chemin est à chaque fois défini en relatif également.

    Plutôt que de forcer le chemin partout dans mon code en absolu, j'aurais voulu forcer mon appli au démarrage à "se positionner" dans le répertoire du .jar exécutable.

    Malgré mes recherches sur Internet, je n'ai pas trouvé comment faire cela.
    Quelqu'un parmi vous aurait-il une solution à mon problème ?

    Merci d'avance pour votre aide.

  2. #2
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    utiliser "getResource"/"getResourceAsStream" (c'est un peu plus compliqué avec les modules ... mais commence pas ça).

  3. #3
    Membre très actif

    Homme Profil pro
    Hobbyiste
    Inscrit en
    Juillet 2018
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Hobbyiste

    Informations forums :
    Inscription : Juillet 2018
    Messages : 128
    Billets dans le blog
    1
    Par défaut
    Tout le monde dit getRessource getRessourceAsStream()

    Personnellement comme je n'écris pas des libraries mais des applications complètes je mets le fichier ressource à l'extérieur du fichier JAR attenant au fichier JAR (même dossier, sous-dossier du répertoire de lancement de l'application. Ça évite quelques problèmes qui ne sont pas simples à manager. En plus dans la perspective d'un développement libre cela permet facilement (plus facilement) de remplacer par exemple un son, une image par des fichiers personnalisés pour l'utilisateur (mon cas est le développement d'une RythmBox).

    Dans ce cas:
    new File(String filename) et il faut mettre le sous-dossier du répertoire de lancement: Empty3.Jar est dans target/ mais les sons sont dans "rythms/wav/dong.wav" relatif au répertoire de lancement (répertoire d'exécution de l'app, lancée par exemple par un batch ou si tu as un installateur valable mais c'est une autre histoire)
    new File("ryhtms/wav/dong.wav");
    Le chemin absolu n'est utilisable à mon sens que si tu as des fichiers fixes comme des fichiers systèmes. Et encore je ne suis pas sûr que ce soit recommandable en Java.

  4. #4
    Membre averti
    Homme Profil pro
    C++, Java
    Inscrit en
    Juillet 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : C++, Java
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 52
    Par défaut
    Bonjour,

    Après analyse approfondie, mon problème était totalement ailleurs.
    C'était bien lié à la nouvelle version Java, mais l'anomalie avait lieu complètement ailleurs.

    J'ai trouvé depuis la correction à cette anomalie.

    Merci tout de même pour votre aide.

    Cordialement

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