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 :

Chemin de la classe en cours


Sujet :

Java

  1. #1
    Membre éclairé Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Par défaut Chemin de la classe en cours
    Bonjour à tous,

    Comment récuperer le chemin vers le package de la classe en cours ?

    D'avance merci,
    TSalm

  2. #2
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bonjour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.getClass().getPackage().getName();
    Attention: ça lance une NullPointerException dans une classe qui n'est pas dans un package.

  3. #3
    Membre éclairé Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Par défaut
    Citation Envoyé par djo.mos Voir le message
    Bonjour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.getClass().getPackage().getName();
    Attention: ça lance une NullPointerException dans une classe qui n'est pas dans un package.
    Je me suis mal expliqué. Je voulais parler du chemin dans le systeme de fichiers où se trouve le package de ma classe.

  4. #4
    Membre éclairé Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Par défaut
    Bon, le code dans la FAQ ne fonctionne pas pour moi...
    Mais la voici un peu modifier et qui fonctionne sur mon bon vieux Windows

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    /***
             * Retourne le chemin du dossier qui contient le package d'une classe
             * @return
             */
    	public static String getPathClass(Class myClass) {
    	    String path = '/' + myClass.getName().replace('.','/') + ".class";
    	    URL url = myClass.getResource(path);
     
    	    try {
    	    	path = URLDecoder.decode(url.toString(), "UTF-8");
    	    } catch (Exception exc) {System.out.println("Exception "+exc.getMessage());}
     
     
    	    // suppression de  la classe ou du jar du path de l'url
    	    int index = path.lastIndexOf("/");
    	    path = path.substring(0, index);
     
    	    if (path.startsWith("jar:file:"))
    	    {
    	      // suppression de jar:file: de l'url d'un jar
    	      // ainsi que du path de la classe dans le jar
    	      index = path.indexOf("!");
    	      path = path.substring(9, index);
    	    }
    	    else
    	    {
    	      // suppresion du file: de l'url si c'est une classe en dehors d'un jar
    	      // et suppression du path du package si il est présent.
    	      path = path.substring(5, path.length());
    	      Package pack = myClass.getPackage();
    	      if (null != pack)
    	      {
    	        String packPath = pack.toString().replace('.', '/');
    	        if (path.endsWith(packPath))
    	        {
    	          path = path.substring(0, (path.length() - packPath.length()));
    	        }
    	      }
    	    }
     
    	    // Si Windows => enlever le 1er \
    	    if (System.getProperty("os.name").startsWith("Windows")) {
    	    	path = path.substring(1,path.length());
    	    }
     
    	    return  path;
    	}
    [edit: ce code retourne le chemin d'une classe]

  5. #5
    Membre éclairé Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Par défaut
    Oups, le code précédent retourne le chemin d'une classe. Pour retourner le chemin du package d'une classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    	public static String getPathPackage(Class myClass) {
    		String path = null;
     
    	    URL url = myClass.getResource("/");
     
    	    try {
    	    	path = URLDecoder.decode(url.toString(), "UTF-8");
    	    } catch (Exception exc) {System.out.println("Exception "+exc.getMessage());}
     
    	    // Supprime le "file:"
    	    if (path.startsWith("file:")) path = path.substring("file:".length(),path.length());
     
    	    // Supprime le dernier séparateur :
    	    if (path.endsWith("/")) path = path.substring(0,path.length()-1);
     
    	    // Si Windows => enlever le 1er \
    	    if (System.getProperty("os.name").startsWith("Windows")) {
    	    	path = path.substring(1,path.length());
    	    }
     
    	    return  path;
    	}

Discussions similaires

  1. convertir un chemin de fichier en format cour
    Par popofpopof dans le forum VBA Access
    Réponses: 6
    Dernier message: 24/04/2008, 23h33
  2. Comment obtenir le chemin du fichier class ?
    Par Elbarto dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 16/11/2005, 10h37
  3. [API WIN32]Recuperer le chemin de l'exe en cours...
    Par X-K4l1 dans le forum Windows
    Réponses: 1
    Dernier message: 11/08/2005, 23h15

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