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 :

[Jar] Lister les classes d'un Jar


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 891
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 891
    Par défaut [Jar] Lister les classes d'un Jar
    Bonjour

    Voici mon problème. Je dispose d'une application dite "core". Dans un des répertoires liés à cette application, je place des fichiers Jar qui me serviront de plugins.
    Jusque là, ça, je détecte bien mes Jar et je les liste.
    Ma question réside au point suivant. Je veux pouvoir lister les classes de ces divers Jars dans le but de les charger dans le ClassLoader de l'application core.
    Or, je dois avouer que j'ai un peu de mal à réaliser ceci
    Quelqu'un pourrait-il me conseiller sur la bonne marche à suivre ?

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  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,


    Je ne pense pas que rechercher les class dans les jar soit la meilleur solution, car cela t'obligera à charger toutes les class en mémoire...

    Le mieux est d'utiliser la solution du ServiceLoader dont je t'ai parlé dans le précédent sujet : la solution consiste à utiliser dans chaque jar un simple fichier texte contenant le nom des classes implémentant l'interface de ton plugin...

    Ce mécanisme est détaillé ici : http://www.developpez.net/forums/sho...26#post1457326

    Je pense que c'est à la fois la solution la plus propre et la plus simple, et c'est d'ailleurs assez standard (c'est utilisé par Java 6 pour le chargement auto des drivers JDBC).

    a++

  3. #3
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 891
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 891
    Par défaut
    Salut Adi

    C'est vrai j'avais déjà lu ce thread.
    Il va falloir en fait mettre à jour ce fichier à chaque modification.
    Mais bon, il est clair que ta solution est "toute prête" mais il me faut encore un peu de réflexion pour que tout soit correct en Java5.
    J'ai encore de quoi réfléchir et pousser mon modèle.

    Merci à toi

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  4. #4
    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
    Citation Envoyé par GLDavid
    Il va falloir en fait mettre à jour ce fichier à chaque modification.
    Tu as un fichier par jar, donc par plugin...

    Je ne pense pas que le nom de la classe représentant tes plugins puisse changer tous les deux jours

    a++

  5. #5
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 891
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 891
    Par défaut
    Salut Adi

    Je potasse la solution que tu as donné à Narmataru.
    Donc, si j'ai bien compris, ton fichier META-INF/services/com.machin.truc est localisé dans le Jar du plugin.
    Il va donc me falloir récupérer les entries de mon Jar jusqu'à tomber sur ce fichier pour que la méthode que tu as indiqué fonctionne.
    C'est ça ou je suis complètement à l'ouest ?

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  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
    Citation Envoyé par GLDavid
    Il va donc me falloir récupérer les entries de mon Jar jusqu'à tomber sur ce fichier pour que la méthode que tu as indiqué fonctionne.
    C'est ça ou je suis complètement à l'ouest ?
    Oui c'est cà !

    Mais la récupération de ces fichiers est très simple avec la méthode getResources() du classloader. Le code de la méthode searchServices() de mon message fait exactement cela et retourne la liste des Class<?> trouvé. Il suffit de lui passer le type de classe et le classloader à utiliser.

    a++

Discussions similaires

  1. Charger les classes d'un Jar incluses dans un Jar
    Par daronmaster dans le forum Général Java
    Réponses: 2
    Dernier message: 08/06/2009, 22h11
  2. Exporter le .jar avec les classes .java
    Par womannosky dans le forum NetBeans
    Réponses: 2
    Dernier message: 27/01/2009, 22h27
  3. [ClassLoader]Charger les classes d'un Jar
    Par GLDavid dans le forum Langage
    Réponses: 5
    Dernier message: 19/10/2007, 17h22
  4. Lister les fichiers d'un JAR
    Par Yannick_from_31 dans le forum Langage
    Réponses: 6
    Dernier message: 02/10/2007, 11h19
  5. [Debutant] probleme pour utiliser les classes d'un .jar
    Par pissek dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 12/05/2004, 18h21

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