因此,我開始使用Jaxb創建我正在使用的程序的文件的XML副本。Jaxb編組點變量
在我的代碼實現後,我沒有問題,直到我最近添加了一個新的類到我的主類。
它可以很好地保存/加載該類是空白/未使用的,但是當試圖用某些數據Marshall該類時,我得到StackOverflowErrors
。 (在一個場景中,將馬歇爾與所有沒有問題?)
錯誤消息
Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
at sun.reflect.Reflection.quickCheckMemberAccess(Reflection.java:84)
at java.lang.reflect.Field.get(Field.java:388)
at com.sun.xml.internal.bind.v2.runtime.reflect.Accessor$FieldReflection.get(Accessor.java:250)
at com.sun.xml.internal.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:118)
at com.sun.xml.internal.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:345)
at com.sun.xml.internal.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:681)
at com.sun.xml.internal.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:143)
at com.sun.xml.internal.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:345)
at com.sun.xml.internal.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:681)
at com.sun.xml.internal.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:143)
at com.sun.xml.internal.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:345)
at com.sun.xml.internal.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:681)
的.xml
文件輸出看起來正常,直到達到新的類我添加了這是哪裏它變壞了。
<positionPercentage>
<x>0</x>
<y>0</y>
<location>
<x>0</x>
<y>0</y>
<location>
<x>0</x>
<y>0</y>
<location>
<x>0</x>
<y>0</y>
<location>
<x>0</x>
<y>0</y>
<location>
<x>0</x>
<y>0</y>
<location>
<x>0</x>
<y>0</y>
<location>
<x>0</x>
<y>0</y>
<location>
<x>0</x>
<y>0</y>
<location>
<x>0</x>
<y>0</y>
<location>
通常,ws
類的xml看起來像這樣。它包含一個Map<String, WidgetLink> WidgetLinks
。這將一個鍵串映射到WidgetLink
。 WidgetLink
類包含WidgetCode
,Point positionPercentage
和兩個字符串。問題的關鍵變量似乎是程序
<ws>
<widgetLinks>
<entry>
<key>Main-Comp Rack Fault `%rackname`</key>
<value>
<widgetCode>
<widgetName>LED-Circle-25x25</widgetName>
<variables>
<entry>
<key>`%XPOS%`</key>
<value></value>
</entry>
<entry>
<key>`%YPOS%`</key>
<value></value>
</entry>
<entry>
<key>`%IO_ID%`</key>
<value></value>
</entry>
</variables>
<fullWidgetText> ALOT OF CODE CUT OUT BUT IT PRINTS FINE</fullWidgetText>
<filePath>LED-Circle-25x25.txt</filePath>
</widgetCode>
<positionPercentage>
<x>0</x>
<y>0</y>
</positionPercentage>
<variableName>Comp Rack Fault `%rackname`</variableName>
<panelName>Main</panelName>
</widgetLinks>
</ws>
的問題,我不知道該<location>
項目是什麼,或者它來自哪裏?
我所有的課用@XmlAccessorType(XmlAccessType.FIELD)
和我的主類Store
使用代碼@XmlRootElement(name = "Store") @XmlAccessorType(XmlAccessType.FIELD)
是錯誤的東西做的Point
變量?
編輯 - 我做了Point
變量靜態,所以它不會被寫入XmlAccessType.FIELD
的當前設置,它寫出罰款。我怎麼能Marshall點變量?