ClassLoader et Class.forName

Le
jpochat
Bonjour

Je souhaite fabriquer avec BCEL le byte code d'une classe "A" qui
ressemble à ça :

public class A {

public Class method1() {
return Class.forName("B");
}
}

Un ClassLoader personnalisé fabrique les classes dynamiquement.
Pour utiliser "A", c'est facile :

myClassLoader.findClass("A");

Le problème c'est que "B" est également généré et "Class.forName"
utilise un ClassLoader système. Comment faire pour que mon ClassLoader
soit pris en compte par "Class.forName" ?

Merci d'avance
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Frederic WOEHL
Le #592689
public static Class forName(String name,
boolean initialize,
ClassLoader loader)

L'appel à
Class.forName("B") ;
est équivalent à
Class.forName("B", true, this.getClass().getClassLoader()) ;

donc pour toi:
Class.forName("B", true, myClassLoader ) ;

FRED




J?r?me Pochat wrote:

Bonjour

Je souhaite fabriquer avec BCEL le byte code d'une classe "A" qui
ressemble à ça :

public class A {

public Class method1() {
return Class.forName("B");
}
}

Un ClassLoader personnalisé fabrique les classes dynamiquement.
Pour utiliser "A", c'est facile :

myClassLoader.findClass("A");

Le problème c'est que "B" est également généré et "Class.forName"
utilise un ClassLoader système. Comment faire pour que mon ClassLoader
soit pris en compte par "Class.forName" ?

Merci d'avance


Publicité
Poster une réponse
Anonyme