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] Où se situe-t-il ?


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut [Classpath] Où se situe-t-il ?
    Bonjour,

    On trouve pas mal de documentation sur "classpath" sur le net mais une bonne partie sont à la ramasse...

    Pour le classpath, ils nous renseignent sur la variable d'environnement "path" ou alors sur le path des classes Java.

    Pour notre projet, nous avons besoin de récupérer le chemin d'accès au classpath puis de lister les fichiers xml pour ensuite les lister.

    Filtrer et lister selon un path, c'est ok.
    Cependant, récupérer le chemin d'accès au classpath pour le lire...
    Là je ne sais pas ce que cela donne...

    Sauriez vous où récupérer le classpath ?
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Le CLASSPATH, c'est comme la cuillère de Matrix : il n'existe pas

    Plus sérieusement contrairement au PATH système, tu n'as pas une variable d'environnement qui comporte tous les chemins du classpath, car le classpath peut prendre plusieurs qui n'y sont pas forcément représentable. De plus cela dépend énormément de la manière dont tu lances

    Il y a bien la variable système "java.class.path", mais elle comporte uniquement le classpath initial avant de lancer l'application, mais qui peut être très différent de celui de ton application...

    Citation Envoyé par Deallyra Voir le message
    Pour notre projet, nous avons besoin de récupérer le chemin d'accès au classpath puis de lister les fichiers xml pour ensuite les lister.
    Ces fichiers XML sont où précisément ?
    Ils ont toujours le même chemin ou tu dois parcourir tous les sous-répertoires ???

    a++

  3. #3
    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 : 45
    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
    le classpath est l'ensemble des ressources faisant partie de ton classloader. La mauvaise nouvelle c'est que c'est juste le résultat du fonctionnement du classloader, il n'y a pas nécessairement de "liste des paths" accessible. Tu peux bien sur y aller en force sur le classloader. Par exemple, si le classloader hérite de URLClassLoader, tu peux utiliser sa méthode getURLs.

    Le problème c'est que:

    1) les urls de type http:// ne sont pas scannables
    2) quand on charge des jar avec des class-path: dans le MANIFEST.MF, ca commence vite à devenir complexe.


    pourquoi as-tu besoin de lister les xml accessbile et te rend tu compte, si t'incorpore des librairies annexes, de la quantité de xml que tu risque de sortir?


    Le mieux serait plutot de te baser sur la manière dont ton programme est installé pour déterminer tous les jar et à partir de là explorer ceux que tu désire.

    Edit: en faisant un test sur un appli en prod: 227 xml de trouvés

  4. #4
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Plop et merci :3

    Citation Envoyé par adiGuba Voir le message
    Il y a bien la variable système "java.class.path", mais elle comporte uniquement le classpath initial avant de lancer l'application, mais qui peut être très différent de celui de ton application...
    Ce qui explique certaines réponses que j'ai lues donc... Réponses incomplètes :/

    Citation Envoyé par adiGuba Voir le message
    Ces fichiers XML sont où précisément ?
    Ils ont toujours le même chemin ou tu dois parcourir tous les sous-répertoires ???
    En fait...
    J'ai une application qui doit aller chercher tous les "Analysis Engine", les "Collection Reader", les "Types System" (...) de mon application.

    Grossièrement, ce sont des fichiers XML reliés à des fichiers java permettant de réaliser des traitements spécifiques sur des fichiers.

    Bref. Lorsque je lance mon application, j'ai besoin de lui donner la liste de ces fichiers disponibles.
    Il peut s'agir de Jar qu'il a incorporé (et dans ce cas on se débrouillera pour rajouter le chemin au classpath) ou alors de fichiers déjà présents avant.
    Aussi ils peuvent être un peu n'importe où sur son pc.

    Citation Envoyé par tchize_ Voir le message
    pourquoi as-tu besoin de lister les xml accessbile et te rend tu compte, si t'incorpore des librairies annexes, de la quantité de xml que tu risque de sortir?
    Je ne m'en rends pas encor complètement compte mais je vois bien que ça peut vite se révéler être assez lourd oui
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  5. #5
    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 : 45
    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
    en gros t'as besoin de trouver n'importe quoi, n'imprte ou?

    Pour ceux qui sont dans le jar, si ils portent un nom précis (exemple META-INF/machin.xml), il y a moyen de demander au classlaoder de récupérer tous les "META-INF/machin.xml" du classpath sous forme d'une énumération d'urls. Pareil si le répertoire est connu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Enumeration e = classloader.findRessources("/META-INF/");
    devrait retourner tous les folder META-INF du classapth

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Si tu pouvais placer dans un même répertoire ce serait plus pratique (même si ce répertoire peut être compris dans plusieurs emplacement du classpath).

    En effet tu peux utiliser getResources() pour récupérer toutes les ressources avec le même nom, par exemple pour obtenir tous les répertoire "xml" du classpath :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	ClassLoader classLoader = ClassLoader.getSystemClassLoader();
    	Enumeration<URL> urls = classLoader.getResources("xml");
    Ensuite il faut traiter chacune de ces URL selon leurs protocoles, sachant que tu peux avoir deux principaux protocoles :
    • file: si le répertoire fait partie d'un répertoire. L'URL correspond alors tout simplement au répertoire et tu peux le lister le plus simplement du monde.
      jar:, et tu as alors une URL vers le répertoire à l'intérieur du jar, sous la forme jar:file:/chemin_vers_le.jar!/repertoire
      Il faut alors décomposer l'URL pour récupérer uniquement l'URL vers le jar, afin de pouvoir le parcourir.


    Attention car tu peux très bien avoir d'autres protocoles que tu ne devrais pas traiter...


    a++

    [edit] Grillet

  7. #7
    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 : 45
    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
    Citation Envoyé par adiGuba Voir le message
    [edit] Grillet
    Grilled

  8. #8
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    [mauvaise_foi] Sur mon clavier les touches 'T' et 'D' sont beaucoup plus proche que sur les autres claviers [/mauvaise_foi]


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

Discussions similaires

  1. [Ant] utiliser le classpath d'Eclipse avec Ant
    Par XavierZERO dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 30/03/2007, 14h00
  2. [ Eclipse ][classpath] Problème de classpath
    Par pista dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 26/04/2004, 22h18
  3. [ClassPath] Comment modifier le classpath d'eclipse?
    Par Elmilouse dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 08/04/2004, 18h32
  4. Réponses: 2
    Dernier message: 23/11/2003, 18h44
  5. [Classpath] problème de création de setclasspath.bat
    Par worldchampion57 dans le forum Général Java
    Réponses: 7
    Dernier message: 06/05/2003, 13h32

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