Ça, ça créé un nouveau classloader indépendant du classloader système. On peut le faire, mais un new ne fonctionnera pas, parce que le classloader système ne connaitra pas cet url, donc ne trouveras pas la classe. Pour instancier la classe, il faudra la charger par ucl.loadClass() qui te renveras une instance de Class, sur laquelle tu pourras faire un newInstance() pour l'instancier. Une autre solution serait de faire un classloader personalisé (à base d'URLClassLoader, mais en gérant soit-même ce que fait le system classloader(!)) et de lancer l'application avec ce classloader (java -Djava.system.class.loader=la classe de classloader personalisée...).
Partager