ClassCircularityError levée par ClassLoader.defineClass
Je suis le chargement des classes à l'aide d'un class loader personnalisé. Pour la plupart, tout fonctionne, mais parfois, lorsque je charge notamment des projets complexes/les bibliothèques, j'ai eu un bug étrange:
Exception in thread "main" java.lang.ClassCircularityError:
org/apache/commons/codec/binary/Hex
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.lang.ClassLoader.defineClass(ClassLoader.java:466)
at my.custom.class.Loader.loadClass(...)
À la recherche, à la documentation Javadoc, je ne m'attends pas defineClass
à se débarrasser de cette erreur. org/apache/commons/codec/binary/Hex
est la classe je suis en train de charger. C'est presque comme si defineClass
veut une copie de la classe avant de définir la classe qui n'a aucun sens pour moi.
Idées?
source d'informationauteur Jim
Vous devez vous connecter pour publier un commentaire.
Un
ClassCircularityError
est levée lorsqu'une classe est un (indirecte) de la superclasse de lui-même, en interface (indirectement) s'étend lui-même ou similaire.Cela devrait normalement pas se produire en tant que bien comportés compilateur ne produira pas de classes, mais à l'aide de différentes versions d'une bibliothèque (ou à l'aide de plusieurs bibliothèques contenant les différentes versions d'une classe) pourrait apporter à ce problème.
Numériser vos bibliothèques doubles pour les noms de classe, en particulier, ont un coup d'oeil s'il y a plusieurs versions de la
org.apache.commons.codec.binary.Hex
classe.