Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ClassLoader et Class.forName

1 réponse
Avatar
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

1 réponse

Avatar
Frederic WOEHL
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