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 :

Ajouter des classes au ClassPath en cours d'exécution [Trucs & Astuces]


Sujet :

Java

  1. #1
    Membre confirmé Avatar de cyrille37
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2005
    Messages : 155
    Par défaut Ajouter des classes au ClassPath en cours d'exécution
    Bonjour

    Je cherche comment ajouter, en cours d'exécution, des classes dans le classpath. Ceci sans connaître à priori le nom de ces classes.
    De cette façon des classes déjà existantes vont pouvoir utiliser ces nouvelles classes sans faire un appel explicite à un classloader.

    Pour éclaircir un peu ma question, voici l'usage :
    J'ai fait un p'tit programme pour distribuer des calculs sur différentes machines. Le serveur distribu des tâches de calcul aux clients. Ces tâches sont des classes transmises par le réseau et dont le nom est transmit aux destinataires. Par contre ces classes utilisent d'autres classes que le client ne connait pas.
    Le serveur transmet un tableau de byte qui représente un jar contenant toutes les classes dont la tâche à besoin.

    Avez vous une idée ?

    J'ai cherché autours de ClassLoader mais j'ai pas trouvé.

    Merci
    Cyrille

  2. #2
    Membre confirmé Avatar de cyrille37
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2005
    Messages : 155
    Par défaut
    J'ais trouvé !

    Cours et tutoriels Java : http://java.developpez.com/cours/


    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
     
    import java.lang.reflect.*;
    import java.io.*;
    import java.net.*;
     
    public class ClassPathHacker {
     
    private static final Class[] parameters = new Class[]{URL.class};
     
    public static void addFile(String s) throws IOException {
    	File f = new File(s);
    	addFile(f);
    }//end method
     
    public static void addFile(File f) throws IOException {
    	addURL(f.toURL());
    }//end method
     
     
    public static void addURL(URL u) throws IOException {
     
    	URLClassLoader sysloader = (URLClassLoader)ClassLoader.getSystemClassLoader();
    	Class sysclass = URLClassLoader.class;
     
    	try {
    		Method method = sysclass.getDeclaredMethod("addURL",parameters);
    		method.setAccessible(true);
    		method.invoke(sysloader,new Object[]{ u });
    	} catch (Throwable t) {
    		t.printStackTrace();
    		throw new IOException("Error, could not add URL to system classloader");
    	}//end try catch
     
    }//end method
     
    }//end class
    Usage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    String classpath = "/chemin/monJar.jar";
    ClassPathHacker.addFile(classpath);
    clazz = Class.forName("monpackage.MaClassee");
    Trop cool ... ;-)

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

Discussions similaires

  1. Ajouter des classes à une application sans recompiler
    Par DJ_Nounours dans le forum Général Java
    Réponses: 2
    Dernier message: 24/06/2010, 18h06
  2. comment ajouter des classes sous java
    Par oumay dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 04/02/2010, 18h59
  3. ajouter des class à un projet
    Par greg08 dans le forum Langage
    Réponses: 2
    Dernier message: 08/12/2009, 18h04
  4. ajouter des classes à une app déployée
    Par barhili04 dans le forum C#
    Réponses: 4
    Dernier message: 25/05/2007, 12h57
  5. [debutant] Comment ajouter des .class ?
    Par Slein dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 30/04/2004, 14h30

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