2 votes

Netbeans ne charge pas une classe au moment de l'exécution

Je transfère une application Java vers la plate-forme Netbeans. L'une des fonctions utilise le SAXBuilder de la bibliothèque Xerces pour analyser le XML.

Déclaration de SAXBuilder

SAXBuilder builder = new SAXBuilder("org.apache.xerces.parsers.SAXParser", true);

Cette ligne provoque une exception JDOM (sans doute parce qu'il n'a pas pu charger l'analyseur spécifié) :

builder.build(xmlFile);

Le message d'erreur est le suivant :

Impossible de charger org.apache.xerces.parsers.SAXParser : Classe de pilote SAX2 org.apache.xerces.parsers.SAXParser introuvable : Ne charge pas la classe org.apache.xerces.parsers.SAXParser arbitrairement à partir de l'un des modules suivants ModuleCL@16c14e7[org.netbeans.libs.xerces] et ModuleCL@17e5fde[czsaw.project] à partir de SystemClassLoader[406 modules] ; voir http://wiki.netbeans.org/DevFaqModuleCCE

Comment résoudre ce problème ?

1voto

jpredham Points 1214

Assurez-vous que la bibliothèque que vous avez chargée dans les bibliothèques du projet est le bon paquetage pour SAXBuilder. Il semble qu'il y ait une ambiguïté au niveau des classes, et il n'est pas sûr de savoir laquelle charger.

0voto

Chap Points 1846

Consultez la FAQ de Netbeans.

Ils ont conçu les chargeurs de classe de manière à ce qu'ils échouent en cas de modules multiples, ce qui est source d'ambiguïté.

http://wiki.netbeans.org/DevFaqModuleCCE

Comme le suggère l'article, placez ce code dans le module qui doit définir la classe à utiliser :

Thread.currentThread().setContextClassLoader( Votre classe .class.getClassLoader()) ;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X