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 :

Classpath recursif possible?


Sujet :

avec Java

  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2007
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 401
    Par défaut Classpath recursif possible?
    Bonjour,

    Il y a longtemps que je ne viens pas sur le forum... il y a longtemps que je ne programme plus...

    Alors petite question relative au classpath d'un projet sous eclipse.

    La structure de mon projet est la suivante:


    Project
    ## bin
    ### Input
    ##### a.csv
    ##### dir1
    ####### dir2
    ######### dir3
    ########### b.csv
    ## src
    ### Main.java
    ### constants
    ### util
    ##### FileUtil.java


    Lorsque j'exécute mon projet, j'essaye de lire les CSVs qui sont dans mon classpath. Mon classpath (User Entries) possède le répertoire "Input".
    Pour cela, j'ai la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    final URL url = this.getClass().getClassLoader().getResource("a.csv");
    => celle ci se passe bien
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    final URL url2 = this.getClass().getClassLoader().getResource("b.csv");
    => celle ci retourne NULL

    Je pense que le classpath ne prends pas en compte les sous-répertoires. Ai-je raison? comment résoudre le problème?

    Merci!

  2. #2
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    Bonjour,
    Citation Envoyé par pjmorce Voir le message
    Je pense que le classpath ne prends pas en compte les sous-répertoires. Ai-je raison? comment résoudre le problème?
    Non, c'est pas tout a fait cela, en fait dans ton classPath tu lui as donné input donc quand tu ecris "getResource("b.csv")" il va chercher dans input s'il le trouve c'est pour cela que a.csv est bien trouvé.
    b.csv ne se trouve pas à la racine de input il faut donc lui donner les répertoires :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    final URL url2 = Resources.class.getClassLoader().getResource("dir1/dir2/dir3/b.csv");
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    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 : 44
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Le "getResource" scanne les répertoires du CLASSPATH sans chercher dans les sous-répertoires. Tu dois donner le chemin absolu relativement à un chemin du CLASSPATH.
    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.

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2007
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 401
    Par défaut
    Merci!

    Y-a-t-il un autre moyen d'obtenir les fichiers et de les "parser" sans connaitre les sous-répertoires où ils se trouvent?

    Citation Envoyé par dinobogan Voir le message
    Le "getResource" scanne les répertoires du CLASSPATH sans chercher dans les sous-répertoires. Tu dois donner le chemin absolu relativement à un chemin du CLASSPATH.

  5. #5
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    Citation Envoyé par pjmorce Voir le message
    Y-a-t-il un autre moyen d'obtenir les fichiers et de les "parser" sans connaitre les sous-répertoires où ils se trouvent?
    Si tu ne connais pas la structure c'est qu'elle est dynamique ou fournis par l'utilisateur ! Dans ce cas comment ce fait il qu'il se trouve dans le classpath, pour moi c'est un paramètre de l'application et dans ce cas la il doit être récupéré soit par un fichier de configuration ou un -D. Le classpath n'est pas fait pour cela !
    Et de cette façon, le répertoire pourra être parcouru de façon classique.
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  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
    Si c'est dans le classpath vu que c'est toi le dev, tu devrais savoir où elles se trouvent. Comment ce fais ce que tu ne le sache pas?

  7. #7
    Membre éclairé
    Inscrit en
    Octobre 2007
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 401
    Par défaut
    Je le sais.
    Mais j'ai une structure de répertoire grande avec beaucoup de fichiers.
    Je voudrais mettre le tout dans le classpath sans avoir à définir le chemin de chaque fichier...

    Citation Envoyé par tchize_ Voir le message
    Si c'est dans le classpath vu que c'est toi le dev, tu devrais savoir où elles se trouvent. Comment ce fais ce que tu ne le sache pas?

  8. #8
    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
    il faudrait que tu nous explique pourquoi tu a besoin de tous ces fichiers dans le classpath. D'habitude, les choses que l'on trouve dans le classpath, c'est du genre:
    les fichiers de configuration -> au nombre de quelques uns
    les images / sons utilisé par le programme -> tu dois inévitablement les différencier, chacun étant associé à un bouton / évènement différent
    les classes -> le compilateur s'en charge
    éventuellement des choses comme la doc -> seulement quelques fichiers.


    Donc j'aimerais comprendre le but recherché car je craint que tu sois partis sur une mauvaise stratégie à la base. De toutes façons, il n'est pas possible de 'scanner' le classpath, c'est une notion trop large en java. Ca regroupe des jars, des dossiers, des urls http (dans le cas d'applet), ça peut être sur une base de données, etc...

  9. #9
    Membre éclairé
    Inscrit en
    Octobre 2007
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 401
    Par défaut
    Merci.

    Je pense que tu as raison. Je vais enlever ma structure de répertoire du classpath.



    Citation Envoyé par tchize_ Voir le message
    il faudrait que tu nous explique pourquoi tu a besoin de tous ces fichiers dans le classpath. D'habitude, les choses que l'on trouve dans le classpath, c'est du genre:
    les fichiers de configuration -> au nombre de quelques uns
    les images / sons utilisé par le programme -> tu dois inévitablement les différencier, chacun étant associé à un bouton / évènement différent
    les classes -> le compilateur s'en charge
    éventuellement des choses comme la doc -> seulement quelques fichiers.


    Donc j'aimerais comprendre le but recherché car je craint que tu sois partis sur une mauvaise stratégie à la base. De toutes façons, il n'est pas possible de 'scanner' le classpath, c'est une notion trop large en java. Ca regroupe des jars, des dossiers, des urls http (dans le cas d'applet), ça peut être sur une base de données, etc...

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

Discussions similaires

  1. Est-il possible de tester un classpath ?
    Par gifffftane dans le forum Tests et Performance
    Réponses: 0
    Dernier message: 25/08/2008, 21h38
  2. Application 'classique' possible en java ?
    Par jeanphy dans le forum JBuilder
    Réponses: 3
    Dernier message: 26/03/2003, 22h24
  3. directx et java?? possible??
    Par jiraiya dans le forum DirectX
    Réponses: 3
    Dernier message: 09/07/2002, 19h55
  4. [CR] Est il possible de créer des univers avec Seagate Info?
    Par Frank dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 27/06/2002, 15h22
  5. MDI sans MFC, possible ?
    Par delire8 dans le forum MFC
    Réponses: 4
    Dernier message: 17/06/2002, 07h38

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