我在做一个Boss缝项目,当我认为的一种形式,我得到这个错误。

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

它常常同访问用户类是相关的表格,显示在屏幕上,它是没有意义我为什么它的同类,这似乎是不可能的。

有帮助吗?

解决方案

此情况发生时,两个不同的对象ClassLoader加载类具有相同名称。两类Java中的平等依赖于完全合格的名称的类加载器加载它。

因此,如果从相同的位置的两个独立的类加载器加载的类,然后对象那些类型的将不能够被转换为彼此类型,即使他们的类被称为相同。

其他提示

作为Joachim解释说早些时候,java。郎。ClassCastException时,通常会发生两类装入器的负载该课程具有相同的名称。然而,我遇到过另一个局势时这可能会发生。

这可能会出现一些IDE的自动重新载入课程已经修改。在这种情况下可能有更旧的版本的这类保留在记忆造成的ClassCastException。

这里有几个方法可以解决这个问题:

  1. 如果你正在写一个自定义舱装载机,而载入一种类确定,基薪/默认舱装载机尚不具有的一个实例,这类装载。

  2. 使类被载入一个分类类已加载的默认舱装载机。

  3. 使级正在加载有实现一个接口,这已经载的默认舱装载机。

更多的信息在这里- http://www.jspwiki.org/wiki/A2AClassCastException

这是因为类已通过两个不同的类加载器加载。你可以不投他们之间。

您可能已经得到了CsiTipoLav的副本在你的应用程序,和两个不同的副本从不同的类装载器不同的时间被加载。 JBoss已经在层级上不同的类加载器过多,而且很容易把事情的转折。

请确保你只有类的一个副本。

你试图铸造的物体,是由不同的类加载器比已加载你正在试图铸造类进一个装载。

在我的情况下我有两个不同*的.ear,想要从另一加载类。 所以我不得不类加载器隔离。我用这样的描述:

http://www.thorgull.be/wiki/index.php?标题= ClassLoader_isolation_in_JBOSS

这为我工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top