Java 无法分配类';它的实例';s接口类型
在OSB(Oracle Service Bus)中,我使用了默认报告操作,但在控制台设置中禁用了默认报告提供程序,因此没有人从默认报告消息队列读取消息 现在,我尝试在OEP(Oracle事件处理)中使用JMS适配器从默认报告队列获取报告消息 我得到了消息,它是一条对象消息(com.bea.wli.reporting.jmsprovider.runtime.ReportMessage),在测试时,我只能通过调用objectMessage.getJMSMessageID()来显示消息ID,但当我可以调用objectMessage.getObject()时,我在OEP服务器控制台中得到了这个异常。 代码抛出的异常对我来说不可见。以下是我得到的一个例外:Java 无法分配类';它的实例';s接口类型,java,exception,classcastexception,osb,complex-event-processing,Java,Exception,Classcastexception,Osb,Complex Event Processing,在OSB(Oracle Service Bus)中,我使用了默认报告操作,但在控制台设置中禁用了默认报告提供程序,因此没有人从默认报告消息队列读取消息 现在,我尝试在OEP(Oracle事件处理)中使用JMS适配器从默认报告队列获取报告消息 我得到了消息,它是一条对象消息(com.bea.wli.reporting.jmsprovider.runtime.ReportMessage),在测试时,我只能通过调用objectMessage.getJMSMessageID()来显示消息ID,但当我可以
java.lang.RuntimeException: java.lang.ClassCastException: cannot assign instance of org.apache.xmlbeans.impl.values.XmlAnyTypeImpl
to field com.bea.wli.reporting.jmsprovider.runtime.ReportMessage.metadata
of type org.apache.xmlbeans.XmlObject in instance of com.bea.wli.reporting.jmsprovider.runtime.ReportMessage
但是Javadoc显示了这个XmlAnyTypeImpl实现了XmlOjbect
package org.apache.xmlbeans.impl.values;
import org.apache.xmlbeans.XmlObject;
import org.apache.xmlbeans.SchemaType;
public class XmlAnyTypeImpl extends XmlComplexContentImpl implements XmlObject
我对这一例外情况的理解是:
- 我有一个接口a,类B实现了
- 现在我有一个“b”,它是b的一个实例
- 这个例外说明我不能将“b”赋值给类型为a的变量
我已经尝试将这个getObject调用放在一个单独的OSGi包中,看看这是否会迫使它使用一个类加载器,但我仍然得到相同的异常。您确定
xmlanytypempl
实现的xmlanytypempl
与org.apache.xmlbeans.XMLObject
相同吗?如果相同的名称应用于不同包中具有相同名称的两个不同类,则可能会发生这种情况。使用“XmlObject”这样的通用名称并非不可能,还可以将导入添加到问题中。。似乎它们是名称相同但包不同的接口我刚刚添加了导入部分,这是从java文档中下载的,我下载了这个xmlbeans jar,我无法更改它。如果接口和实现来自不同的类加载器,可能会发生这种情况。这是“无法将X转换为X”问题的一个更微妙的版本。@JimGarrison是否存在这样的问题?我是否可以找出类是如何加载的,并强制它们加载到同一个类加载程序中?非常感谢。