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 :

Tester si une classe est dans le classpath


Sujet :

Langage Java

  1. #1
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut Tester si une classe est dans le classpath
    salut,
    je suis plutôt débutant en java.
    Je cherche à tester si une classe est présente dans le classpath.
    Je serais tenter d'utiliser la reflexivité comme ci-dessous, mais je ne suis pas sûr...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(org.com.Maclasse.class == null){
    }
    else{
    }
    Est-ce la bonne solution ?

  2. #2
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Certainement pas. Ce sera plutot quelque chose du genre (non testé, mais philosophiquement c'est correct) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    try
    {
     Class bienVu = SuisJeDansLeClassPass.class;
     System.out.println("OK pour "+bienVu.getName());
    }
    catch (ClassNotFoundException not)
    {
     System.out.println("NOK because :"+not);
    }
    ... peut être même faudra-t-il faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    try
    {
     Class bienVu = Class.forName("SuisJeDansLeClassPass.class");
    // et le reste c'est pareil que plus haut.
    Avec la philosophie, on n'est jamais sûr.
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  3. #3
    Expert éminent
    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
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour.
    Euh... non, c'est pas la bonne méthode: il suffit d'écrire ça et de le compiler pour s'en rendre compte
    Voici comment on y procède:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    try {
    	Class.forName("org.machin.Truc");
    } catch (ClassNotFoundException e) {
    	// Là, t'es sur que la classe en question n'est pas dans le class path ;-)
    	e.printStackTrace();
    }
    //Sinon, c'est bon !
    Bonne chance.

  4. #4
    Expert éminent
    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
    Points : 7 679
    Points
    7 679
    Par défaut
    Arf ... grillé
    Sinon, le bout de code de Julier et de gif*tane ne compileront que si la classe en question est dans le classpath lors de la compilation.

  5. #5
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    ok merci pour vos réponses.

    Quelle est la différence entre ces deux lignes ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Class bienVu = Class.forName("SuisJeDansLeClassPass.class");
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Class bienVu = SuisJeDansLeClassPass.class;

  6. #6
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Citation Envoyé par julien.63 Voir le message
    Quelle est la différence entre ces deux lignes ?
    La deuxième forme permet de vérifier si une classe existe dans le classpath à partir de son nom lors de l'exécution. par contre, comme la classe est donnée par une chaîne de caractères, rien n'est vérifié à la compilation.

    La deuxième ligne ne compilera pas si la classe n'est pas connue à la compilation par la classe dans laquelle tu écris ce morceau de code.
    Mais à l'exécution, elle permet également de faire la vérification que tu attends, puisque la JVM lancera une exception si la classe n'est pas dans le classpath à l'exécution.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  7. #7
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    ok, merci pour ta réponse.
    C'est très clair.

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

Discussions similaires

  1. [Débutant] Tester si une classe est "vide"
    Par Hobbi1 dans le forum VB.NET
    Réponses: 6
    Dernier message: 12/09/2014, 10h02
  2. Réponses: 4
    Dernier message: 24/10/2011, 18h18
  3. Comment tester qu'une valeur est dans un tableau ?
    Par Pierrot92320 dans le forum MATLAB
    Réponses: 3
    Dernier message: 18/04/2009, 18h59
  4. Réponses: 4
    Dernier message: 17/12/2007, 14h46
  5. Réponses: 4
    Dernier message: 17/12/2007, 14h46

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