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 :

Exécuter le même jar/librairie avec deux versions différentes dans le même projet


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 39
    Points : 31
    Points
    31
    Par défaut Exécuter le même jar/librairie avec deux versions différentes dans le même projet
    Bonjour,
    J’ai un besoin d’exécuter le même jar/librairie avec deux versions différente dans le même projet, je m’explique d’avantage :
    J’ai deux jars mon_jar_v1.jar et mon_jar_v2.jar (presque identique) qui sont importés dans mon projet, je veux exécuter en même temps (au pire pas dans la même class) CLASS_A.FONCTION_X du premier jar et après la même CLASS_A.FONCTION_X du second jar.
    Est-ce que c’est possible ?
    Si oui comment le faire ?
    Merci d’avance.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    pas de manière simple.

  3. #3
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 647
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 647
    Points : 11 136
    Points
    11 136
    Par défaut
    Bonjour,

    voici une solution avec l'IDE Netbeans.
    1- Dans l'arborescence du projet clic droit sur le nom du projet puis "properties"
    2- Dans la fenêtre qui s'ouvre, clic sur l'intitulé "Librairies". Dans l'onglet "compile" sélectionner les fichiers jar à inclure au projet (bouton "add jar/folder").
    Valider.
    3- Dans la classe java où il faut appeler les deux fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    private mon_jar_v1.class_A variable1 = new mon_jar_v1.class_A();
    private mon_jar_v2.class_A variable2 = new mon_jar_v2.class_B();
    Toutefois cela impose une chose pour les projets mon_jar_v1 et mon_jar_v2 : que les classes soient dans un package avec un nom explicite (par défaut avec Netbeans les classes sont dans un package <default_package>).

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    vu que c'est deux version de la même librairie, je pense pas que les deux libirairies auront des packages différents, sinon il n'aurait eu aucun problème

  5. #5
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 647
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 647
    Points : 11 136
    Points
    11 136
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    vu que c'est deux version de la même librairie, je pense pas que les deux libirairies auront des packages différents, sinon il n'aurait eu aucun problème
    euh oui j'ai mélangé le nom du jar avec celui du package

  6. #6
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    Bonjour,

    Le seul moyen de charger deux classes identiques dans deux versions différentes est d'utiliser un classLoader !
    Evidemment, il faut savoir utiliser la reflexion pour le faire.

    Un exemple :
    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
     
                   try (
    			URLClassLoader urlClassLoader =
    					new URLClassLoader(new URL[] { new URL("file:\\chemin_vers_le_jar\\monJar.jar") })) {
    			//Chargement de la classe
    			Class<?> maClass = urlClassLoader.loadClass("com.exemple.MaClass");
     
    			//Recherche du constructeur
    			Constructor<?> constructeur = maClass.getConstructor();
     
    			//Création de l'instance de la classe
    			Object monInstance = constructeur.newInstance();
     
    			//Recherche de la méthode pour pouvoir l'appeler
    			Method methode = maClass.getMethod("maMethode");
     
    			//Appel de la méthode
    			methode.invoke(monInstance);
     
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 39
    Points : 31
    Points
    31
    Par défaut
    Merci à tous pour vos réponses,
    Le java réflection est une bonne idée.
    Cordialement,

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 02/12/2010, 19h39
  2. Réponses: 6
    Dernier message: 16/08/2010, 17h42
  3. Réponses: 2
    Dernier message: 04/03/2010, 18h07
  4. Deux versions Access dans un même windows xp
    Par sami117 dans le forum Runtime
    Réponses: 3
    Dernier message: 03/12/2008, 13h24
  5. [BO 5.1.6] [BO6.5.1] Travailler avec deux versions BO sur le même poste
    Par l_ourse dans le forum Administration-Migration
    Réponses: 7
    Dernier message: 05/03/2008, 10h35

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