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 :

Reflection et version des jar


Sujet :

Java

  1. #1
    Membre éclairé
    Profil pro
    Développeur .Net, Administrateur système
    Inscrit en
    Octobre 2003
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .Net, Administrateur système
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 219
    Par défaut Reflection et version des jar
    Bonjour,

    Pour des besoins de déploiement et de maintenance, j'ai une application Jar qui exploite d'autres jar par reflection.

    ceci étant, les jar exploités par reflection et le jar appelant ont un jar commun mais de version différente.

    Exemple:

    Jar1 : (Appelant)
    utilise log4j v 1.3

    Jar2 : (Appelé )
    Utilise log4j v1.2

    Je ne peux pas lancer d'autres process (pas d'autre machine virtuelle). Contrainte d'administration des systemes.

    Depuis le jar1, existerai t'il une solution pour invoquer des méthodes sur le jar2 tout en exploitant log4j en version 1.2 ?


    Merci...

  2. #2
    Futur Membre du Club
    Inscrit en
    Novembre 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 5
    Par défaut
    Bonsoir.

    C'est possible en utilisant deux ClassLoaders différents:
    ClassLoader1 pour charger les classes contenues dans le jar1 et log4j 1.3.
    ClassLoader2 pour charger les classes contenues dans le jar2 et log4j 1.2.

    Pour utiliser les classes définies dans jar2 depuis les classes définies dans jar1, il faudra déléguer au ClassLoader2 leur chargement via la méthode java.lang.ClassLoader#findClass

    C'est le principe utilisé par le framework osgi pour restreindre la visibilité des bundles (jar à la sauce osgi) entre eux. De fait un framework osgi comme equinox ou felix permet d'utiliser des bundles dépendant de versions différentes d'une même librairie.

  3. #3
    Membre éclairé
    Profil pro
    Développeur .Net, Administrateur système
    Inscrit en
    Octobre 2003
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .Net, Administrateur système
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 219
    Par défaut
    Le jar1 (principal), dispose de log4j v1.3 chargé via la définition du build path sous eclipse.

    Le jar2 (chargé par reflection) est invoqué via un classloader dans lequel ont été enregistrées les URL utiles à son fonctionnement. (y compris log4j v1.2)

    Quand j'invoque une méthode de jar2, il fait appel à log4j v1.3 (et non la version 1.2). Je n'appelle pas directement log4j

    Comment faire en sorte que le jar2 exploite bien log4j v1.2?

    Est ce que votre solution reste compatible avec la configuration du build path du jar1

    Merci pour votre aide

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Par défaut
    Ne ferait-tu pas mieux de passer par le framework OSGI pour faire cela?

    Tu n'aurais alors qu'a enregistrer les services qui intéressent de jar2 pour les appelés depuis jar1. De plus OSGI permet un comportement assez fin au niveau des versions.

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

Discussions similaires

  1. [NetBeans 4.0 Beta 2]Probleme pour monter des jars
    Par nicoo dans le forum NetBeans
    Réponses: 2
    Dernier message: 19/11/2004, 14h14
  2. [Classpath][execution] executer un programme avec des jar.
    Par LoLoSS dans le forum Général Java
    Réponses: 11
    Dernier message: 26/08/2004, 11h45
  3. [NetBeans] ajouter des .jar
    Par salber dans le forum NetBeans
    Réponses: 2
    Dernier message: 28/05/2004, 14h21
  4. Versions des RPMs
    Par MrEddy dans le forum Mandriva / Mageia
    Réponses: 2
    Dernier message: 24/04/2004, 14h54

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