我正在尝试使用EclipseLink MOXy JAXB实现来解组一些XML数据。我有以下带注释的类,它有一个自己类型的成员:
package stackoverflow.q19191209;
import javax.xml.bind.annotation.*;
@XmlRootElement(name="Item")
public class Item
{
@XmlAttribute(name="name")
@XmlID
private String m_name;
@XmlAttribute(name="parent")
@XmlIDREF
private Item m_parent;
}
此类列在jaxb.index中。当我尝试引导我的JAXBContext时:
JAXBContext context = JAXBContext.newInstance("stackoverflow.q19191209");
它会挂起一秒钟,然后给我一个StackOverflowError:
Exception in thread "main" java.lang.StackOverflowError
at java.util.HashMap$ValueIterator.<init>(HashMap.java:820)
at java.util.HashMap$ValueIterator.<init>(HashMap.java:820)
at java.util.HashMap.newValueIterator(HashMap.java:843)
at java.util.HashMap$Values.iterator(HashMap.java:910)
at org.eclipse.persistence.jaxb.compiler.AnnotationsProcessor.hasTextMapping(AnnotationsProcessor.java:3998)
at org.eclipse.persistence.jaxb.compiler.AnnotationsProcessor.hasTextMapping(AnnotationsProcessor.java:4003)
at org.eclipse.persistence.jaxb.compiler.AnnotationsProcessor.hasTextMapping(AnnotationsProcessor.java:4003)
...
当我使用默认的JAXB提供程序时,这不会发生 - 它正确地解组,并且所有关系都已正确建立。这是一个MOXy错误吗?
我尝试过JDK 1.6.0_25和JDK 1.7.0_21,以及MOXy版本2.5.0,2.5.1和2.6.0 - 结果相同。
谢谢! 史蒂夫
答案 0 :(得分:2)
注意:我是EclipseLink JAXB (MOXy)主管,是JAXB (JSR-222)专家组的成员。
已将此问题的修复程序检入EclipseLink 2.5.2和2.6.0。您可以通过以下链接从 2013年10月11日下载此修复程序的每晚版本:
我能够重现您所看到的问题。您可以使用以下链接跟踪我们在此问题上的进展: