Estoy cargando clases utilizando un cargador de clases personalizado. En su mayor parte, todo funciona, pero a veces cuando me carga particularmente complejos proyectos/librerías, aparece un bicho raro:ClassCircularityError lanzado por ClassLoader.defineClass
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(...)
Mirando el Javadocs, yo no esperaría defineClass
para lanzar este error en particular. org/apache/commons/codec/binary/Hex
es la clase que estoy tratando de cargar. Es casi como si defineClass
quisiera una copia de la clase antes de que defina la clase, lo cual no tiene sentido para mí.
Ideas?
¿Podría mostrar su código? ¿Acaba de sobrescribir findClass() como se recomienda? De lo contrario, debes ser muy cuidadoso para que todo salga bien. – Voo
* Es casi como definir que la clase quiere una copia de la clase antes de definir la clase *, no, no quiere una copia de la clase. ¿Y cómo se las arregló para definir un nombre de paquete 'clase'? – bestsss
@bestsss, presumiblemente, el seguimiento de la pila está ofuscado con una mala elección de los nombres de paquete –