EclipseRCP-JAXB异常在程序中,但不在最小的示例中:javax.xml.bind.JAXBElement,也不知道它的任何超类

EclipseRCP-JAXB异常在程序中,但不在最小的示例中:javax.xml.bind.JAXBElement,也不知道它的任何超类,java,eclipse-plugin,jaxb,eclipse-rcp,marshalling,Java,Eclipse Plugin,Jaxb,Eclipse Rcp,Marshalling,我得到了一个奇怪的错误,当我的代码通过我的程序执行时会发生,但当我在一个独立的主方法中运行它时不会发生 代码是: public static void main(String[] args) throws Exception { JAXBContext jaxbContext = JAXBContext.newInstance(ObjectFactory.class); Marshaller marshaller = jaxbContext.createM

我得到了一个奇怪的错误,当我的代码通过我的程序执行时会发生,但当我在一个独立的主方法中运行它时不会发生

代码是:

public static void main(String[] args) throws Exception {
    JAXBContext jaxbContext =
            JAXBContext.newInstance(ObjectFactory.class);
    Marshaller marshaller = jaxbContext.createMarshaller();
    JAXBElement<MyTestObject> marshallableSchedule =
            new ObjectFactory()
                    .createMyTestObject(new MyTestObject());
    marshaller.marshal(marshallableSchedule, System.out);
}
publicstaticvoidmain(字符串[]args)引发异常{
JAXBContext JAXBContext=
newInstance(ObjectFactory.class);
Marshaller=jaxbContext.createMarshaller();
JAXBElement编组计划=
新对象工厂()
.createMyTestObject(新的MyTestObject());
marshaller.marshall(marshallableSchedule,System.out);
}
代码在我的程序中完全相同,但在调用它时,我得到以下异常:

javax.xml.bind.JAXBException:class javax.xml.bind.JAXBElement及其任何超类在此上下文中都是未知的。

我还注意到,如果我执行
jaxBContext.toString()
,那么工作示例将显示包中
ObjectFactory
所在的所有类,而失败的示例仅显示package.ObjectFactory

我发现了很多类似这样的重复问题,但通常都说MyTestObject未知,而不是JAXBElement未知

这与我的项目设置方式有关吗?我正在使用EclipseRCP的特性和插件,如果这有什么不同的话。我已经考虑过这可能是一个类加载器问题,但我仍然不确定它是否是或者如何修复它


任何帮助都将不胜感激

ObjectFactory()创建的对象的类是什么。createMyTestObject(新的MyTestObject())
<代码>对象工厂?
语句<代码> jxbClord.NeWist立场(ObjutField.class)告诉JAXB只考虑这个类的实例。 我觉得它应该是
JAXBContext.newInstance(MyTestObject.class)

另外,只有当类
MyTestObject
对JAXB无效时,才需要
AXBElement
构造(如果可以,请添加一个`@XmlRootElement注释) 代码可能是

JAXBContext jaxbContext = JAXBContext.newInstance(MyTestObject.class);
Marshaller marshaller = jaxbContext.createMarshaller();
MyTestObject marshallableSchedule = new MyTestObject();
marshaller.marshal(marshallableSchedule, System.out);

ObjectFactory().createMyTestObject(新的MyTestObject())
创建的对象的类是什么<代码>对象工厂?
语句<代码> jxbClord.NeWist立场(ObjutField.class)告诉JAXB只考虑这个类的实例。 我觉得它应该是
JAXBContext.newInstance(MyTestObject.class)

另外,只有当类
MyTestObject
对JAXB无效时,才需要
AXBElement
构造(如果可以,请添加一个`@XmlRootElement注释) 代码可能是

JAXBContext jaxbContext = JAXBContext.newInstance(MyTestObject.class);
Marshaller marshaller = jaxbContext.createMarshaller();
MyTestObject marshallableSchedule = new MyTestObject();
marshaller.marshal(marshallableSchedule, System.out);

Eclipse使用一个复杂的类装入器系统来保持插件类路径的分离。这可能会让JAXB感到不安——我对这一点不太了解。您是否在两个测试中使用相同版本的Java?也就是说,您的EclipseRCP插件是否需要比您在main()测试中使用的更高或更低的Java版本?eclipse使用一个复杂的类装入器系统来保持插件类路径的独立。这可能会让JAXB感到不安——我对这一点不太了解。您是否在两个测试中使用相同版本的Java?也就是说,您的EclipseRCP插件是否需要比您在main()测试中使用的更高或更低的Java版本?