L'obtention de la classe de fonte d'exception où les deux classes sont exactement les mêmes
Je suis en train de faire un JBoss SEAM projet et quand j'ai vue un formulaire, j'obtiens cette erreur.
java.lang.ClassCastException:
it.cogitoweb.csi.entity.csiorelav.CsiTipoLav cannot be cast to
it.cogitoweb.csi.entity.csiorelav.CsiTipoLav
Ses toujours la même JPA classe qui est liée à la forme qui est indiqué sur l'écran, ça n'a pas de sens pour moi, pourquoi est-ce la même classe, il semble impossible.
Vous devez vous connecter pour publier un commentaire.
Ce qui se passe lorsque deux
ClassLoader
objets de classes de charge avec le même nom. L'égalité de deux classes en Java repose sur le nom pleinement qualifié et le chargeur de classe qui l'a chargé.Donc, si deux de la catégorie des indépendants chargeurs de classes de charge à partir du même emplacement, puis les objets de ces types ne seront pas en mesure d'être jeté aux autres type, même si les classes sont appelés les mêmes.
Que Joachim expliqué précédemment, java.lang.ClassCastException se produit généralement lorsque les deux chargeurs de classes de charger les classes avec le même nom. Cependant, j'ai rencontré une autre situation, quand cela pourrait se produire.
Cela pourrait se produire avec certains IDE qui recharge automatiquement les classes qui ont été modifiés. Dans de tels cas, il pourrait y avoir des versions plus anciennes de la classe conservé dans la mémoire provoquant ClassCastException.
Voici quelques façons dont vous pourriez résoudre ce problème :
Si vous écrivez une classe personnalisée chargeur, lors du chargement d'une classe assurez-vous que la base de/par défaut chargeur de classe n'a pas déjà une instance de cette classe chargée.
Faire la classe en cours de chargement d'une sous-classe de la classe qui est déjà chargé par la valeur par défaut de la classe loader.
Faire la classe qui est chargé de mettre en œuvre une interface qui est déjà chargé par la valeur par défaut de la classe loader.
Plus d'info ici - http://www.jspwiki.org/wiki/A2AClassCastException
C'est parce que la classe a été chargé par deux chargeurs de classes. Vous ne pouvez pas convertir entre eux.
Vous avez probablement obtenu une copie de
CsiTipoLav
dans votre application, et les deux autres exemplaires sont en cours de chargement à des moments différents de différents chargeurs de classes. JBoss a une pléthore de différents chargeurs de classes dans une hiérarchie, et il est facile d'obtenir des choses dans une torsion.Assurez-vous que vous avez seulement une copie de la classe.
L'objet que vous êtes en train de jeter, est chargé par un autre chargeur de classe que celui qui a chargé la classe que vous essayez de jeter dans la.
Dans mon cas, j'ai eu deux différents *.l'oreille et voulu charger une classe de l'autre.
J'ai donc dû isoler le chargeur de classe. J'ai utilisé cette description:
http://www.thorgull.be/wiki/index.php?title=ClassLoader_isolation_in_JBOSS
Il a travaillé pour moi.