java classcastexception

java - Obtener una excepción de cast de clase donde ambas clases son exactamente iguales



illegalargumentexception (5)

Estoy haciendo un proyecto de JBoss SEAM y cuando veo un formulario obtengo este error.

java.lang.ClassCastException: it.cogitoweb.csi.entity.csiorelav.CsiTipoLav cannot be cast to it.cogitoweb.csi.entity.csiorelav.CsiTipoLav

Siempre es la misma clase de JPA que está relacionada con la forma que se muestra en la pantalla, no tiene sentido para mí por qué es la misma clase, parece imposible.


Como Joachim explicó anteriormente, java.lang.ClassCastException normalmente ocurre cuando dos cargadores de clases cargan las clases con el mismo nombre. Sin embargo, me he encontrado con otra situación cuando esto podría ocurrir.

Esto podría ocurrir con algunos IDE que recargan automáticamente las clases que se han modificado. En tales casos, es posible que existan versiones anteriores de la clase retenida en la memoria que provoque ClassCastException.

Aquí hay algunas maneras en que puede resolver este problema:

  1. Si está escribiendo un cargador de clases personalizado, mientras carga una clase, asegúrese de que el cargador de clases base / predeterminado aún no tenga una instancia de esa clase cargada.

  2. Haga que la clase se cargue como una subclase de la clase que ya está cargada por el cargador de clases predeterminado.

  3. Haga que la clase que se está cargando implemente una interfaz que ya esté cargada por el cargador de clases predeterminado.

Más información aquí - http://www.jspwiki.org/wiki/A2AClassCastException


El objeto que intentas lanzar es cargado por un cargador de clases diferente del que ha cargado la clase en la que intentas lanzar.



Esto ocurre cuando dos objetos diferentes de ClassLoader cargan clases con el mismo nombre. La igualdad de dos clases en Java depende del nombre completo y del cargador de clases que lo cargó.

Por lo tanto, si dos cargadores de clases independientes cargan clases desde la misma ubicación, los objetos de esos tipos no se podrán convertir a los demás, incluso si sus clases se llaman igual.


Esto se debe a que la clase ha sido cargada por dos cargadores de clases diferentes. No puedes lanzar entre ellos.

Es probable que tenga una copia duplicada de CsiTipoLav en su aplicación, y las dos copias diferentes se cargan en diferentes momentos de diferentes cargadores de clases. JBoss tiene una plétora de diferentes clasificadores en una jerarquía, y es fácil hacer que las cosas cambien.

Asegúrate de tener solo una copia de la clase.