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

Entrée/Sortie Java Discussion :

JAR utilisé pour lire des fichiers par une application


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 107
    Par défaut JAR utilisé pour lire des fichiers par une application
    Bonjour,

    Je développe actuellement une librairie qui va me servir pour différents projets.
    Cette lib contient des classes qui vont lire des fichiers XML de configuration par exemple.

    Lorsque je crée un nouveau projet et que j'utilise la dite librairie, j'aimerais ajouter à mon projet les fichiers XML que devra lire la librairie.

    Je ne vois pas du tout comment faire ça.
    Comment mon jar va t'il savoir où trouver les fichiers XML ?
    Pour info j'utilise l'IDE NetBeans.

    J'espère avoir été clair quand aux explication de mon problème, désolé pour le titre qui n'est peut être pas assez explicite :s

    D'avance merci pour votre aide, bonne soirée

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Quand un programme va utiliser cette bibliothèque, ça veut dire donc qu'il va créer une instance d'une classe de cette bibliothèque, ou appeler une méthode static d'une de ces classes.

    Dans les deux cas, constructeurs ou méthodes, on peut y passer des paramètres.
    Le plus simple est de passer en paramètre, où se trouve la configuration. Un File ou une String indiquant le répertoire.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 107
    Par défaut
    Les fichiers seront variables, ils seront différents pour chaque projet.
    La solution de thelvin conviendrait donc mieux.

    Enfin pour que vous y voyiez plus clair, je vais vous donner un exemple concret :
    Je développe en fait un Framework de jeu basé sur la SFML.
    J'ai décidé qu'un certain nombre de composants du jeu pourront être défini via XML, comme par exemple les animations, les SpriteSets etc.
    J'aimerais "imposer" une arborescence pour les projets utilisant ce Framework en fait, du genre :
    ---Repertoire de l'application
    ------Assets
    ---------Textures
    ------------textures ajoutés par l'utilisateur du JAR
    ------------...
    ---------animations.xml
    ---------spritesets.xml

    C'est plus clair ?

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    donc soit avec la méthode de thelvin, tu prévois une méthode static d'une classe de ton API du genre init(File dossierdeconfig), ou dossierdeconfig est la racine de ton arborescence, qui devra être appelée par l'application utilisant ton API dès que nécessaire (ce que fait par exemple commons.logging de Apache)

    soit avec ma méthode, l'utilisateur de ta librairie devra juste ajouter le dossier dossierdeconfig dans le classpath du projet

    tu peux également faire un plugin (pour netbeans comme pour eclipse) dont le but de permettre à l'utilisateur d'indiquer l'emplacement du dossier de config dans une préférence lisible par ton api
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 107
    Par défaut
    Hmm la solution où il suffirait d'ajouter un dossier au classpath est intéressante en fait.
    Par contre cela ne fonctionne pas (il y a certainement quelque chose que j'ai manqué).
    Le dossier assets avec les fichiers xml à l'intérieur, je dois le créer où exactement ?
    Car pour l'instant je l'ai créé sur mon bureau et lié au classpath mais mon jar ne le trouve pas.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    tu as crée un dossier du genre c:/dossier1/dossier2/assets/ avec un fichier toto.xml

    tu as ajouté c:/dossier1 à ton classpath


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    X.class.getResource("dossier2/assets/toto.xml")
    ou X est une classe de ton jar, devrait te retourner l'url du fichier toto.xml

    ce n'est pas le cas ? tu obtiens null ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    ces fichiers xml sont ils fixes ou variables, je veux dire éventuellement modifiables pour chaque projet ?

    pour les fichiers fixes, il suffit de les inclure dans ton jar, comme n'importe quel .class,

    la méthode getResource() ou getResourceAsStream() de la classe Class te permettra de charger ton xml.

    Par exemple, supposons que dans ton API, tu aies une classe fr.truc.bidule.XmlLoader avec la méthode load(InputStream xmlfile), il suffit que tu mettes le fichier toto.xml dans un dossier truc, (modifie ton script de build pour qu'il copie le fichier xml dans ton jar).

    et le code sera par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    InputStream stream=null;
    try {
         stream=XmlLoader.class.getResourceAsStream("truc/toto.xml");
         XmlLoader.load(stream);
    }
    finally {
        try { if ( stream!=null )  stream.close(); }
        catch(IOException e) { //silent }
    }
    si le fichier est modifiable, soit tu peux mettre ton fichier dans un dossier externe de ton jar, mais ajouter ce dossier au classpath, ce qui fera que les classes de ton jar le verront, et on se retrouvera finalement dans la même situation que si le xml était dans le jar.

    autre solution, faire comme n'importe quelle application : utiliser un dossier dans le dossier de stockage prévu par l'os pour y mettre tes xml
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Fonction pour lire des fichiers dans une archive MPQ
    Par MegaBigBoss dans le forum Débuter
    Réponses: 0
    Dernier message: 28/01/2012, 22h02
  2. Une bibliothèque pour lire des fichiers zip
    Par coyotte507 dans le forum C++
    Réponses: 5
    Dernier message: 13/10/2009, 16h32
  3. [Regexp] pattern pour trouver des fichiers par exclusion d'extension
    Par mnementh64 dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 07/09/2006, 10h34
  4. accès à des fichiers par une japplet
    Par gabest dans le forum Applets
    Réponses: 4
    Dernier message: 27/05/2006, 17h39
  5. Boucle en Dos pour lister des fichiers selon une date
    Par Corben dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 17/12/2005, 12h17

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