当我尝试在我的 jaxb.index 文件中引用嵌套类时,在序列化过程中会引发异常。如何避免这种情况?
这是在 Eclipse RCP 应用程序中。导致异常的类与创建 JAXB 上下文并启动序列化的插件位于不同的插件中。这些类位于插件的导出包之一中。
类结构如下所示(名称已更改):
@XmlRootElement(name="foo")
@XmlAccessorType (XmlAccessType.FIELD)
public class Foo extends AbstractFoo {
...
@XmlRootElement(name="fooMetric")
@XmlAccessorType (XmlAccessType.FIELD)
public static class FooMetric implements IFooMetric {
...
}
}
jaxb.index 文件包含以下内容:
Foo
Foo.FooMetric
在序列化过程中,异常说要使用“OuterClass.InnerClass”——我正在这样做。
javax.xml.bind.JAXBException:加载 com/mypackage/jaxb.index 中列出的类“Foo.FooMetric”时出错,请确保条目可在 CLASSPATH 上访问,并且格式为“ClassName”或“OuterClass.InnerClass”,而不是“ ClassName.class" 或 "fully.qualified.ClassName" - 带有链接异常:[java.lang.ClassNotFoundException: com.mypackage.Foo.FooMetric]
javadocs(“jaxb.index 的格式”)还建议 jaxb.index 可以包含 OuterClass.InnerClass 形式的条目。
对 jaxb.index 文件中出现的类名的约束是:
- 不得以“.class”结尾。
- 类名相对于包含 jaxb.index 文件的包进行解析。只允许直接出现在包含 jaxb.index 文件的包中的类。
- 不允许使用完全限定的类名。一个合格的类名,相对于当前包,只允许指定一个嵌套或内部类。
但是,这似乎不起作用。什么会让它发挥作用?