【发布时间】:2011-01-17 04:33:47
【问题描述】:
我正在尝试编组一个将 Object 作为其字段之一的对象。
@XmlRootElement
public class TaskInstance implements Serializable {
...
private Object dataObject;
...
}
dataObject 可以是许多不同的unknown 类型之一,因此在某处指定每个类型不仅不切实际而且不可能。当我尝试编组对象时,它说上下文不知道该类。
MockProcessData mpd = new MockProcessData();
TaskInstance ti = new TaskInstance();
ti.setDataObject(mpd);
String ti_m = JAXBMarshall.marshall(ti);
“MockProcessData 及其任何超类在此上下文中都是已知的。”是我得到的。
有没有办法解决这个错误?
【问题讨论】:
-
你试图将 MockProcessData 序列化为什么?即,期望的表示是什么?
-
作为第一次使用 JAXB 的用户,我在尝试编组从头开始创建的对象树时遇到了完全相同的问题,即不是从已编译的 XSD 创建的。事实上,我想反过来做,一旦我的代码工作,就从类中生成模式。我尝试按照描述将我的对象包装在一个 JAXBElement 中,我得到了与以前完全相同的“Foobar is not known to this context”消息,所以我没有更进一步。
-
Hey Dasmotiu - 我最终包含了 @XMLSeeAlso 注释并提供了它可以尝试解组对象的所有类。例如:@XmlSeeAlso({ StringType.class, DecimalType.class, NumericType.class, BooleanType.class, StructType.class, ListType.class, DateType.class, SpatialType.class }) public abstract class FieldType {