Java Jaxb编组点变量
因此,我开始使用Jaxb创建我在程序中使用的文件的XML副本 在代码中实现之后,我没有遇到任何问题,直到最近我在主类中添加了一个新类 当类为空/未使用时,它可以很好地保存/加载,但在尝试用一些数据整理类时,我会得到Java Jaxb编组点变量,java,xml,jaxb,point,Java,Xml,Jaxb,Point,因此,我开始使用Jaxb创建我在程序中使用的文件的XML副本 在代码中实现之后,我没有遇到任何问题,直到最近我在主类中添加了一个新类 当类为空/未使用时,它可以很好地保存/加载,但在尝试用一些数据整理类时,我会得到stackoverflowers错误。(在一种情况下,它将毫无问题地进行马歇尔试验??) 错误消息 Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError at sun.reflect.Reflec
stackoverflowers错误。(在一种情况下,它将毫无问题地进行马歇尔试验??)
错误消息
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>
我不知道
项目是什么,或者它来自哪里
我的所有类都使用@xmlacessortype(xmlacesstype.FIELD)
,我的主类Store
使用code@XmlRootElement(name=“Store”)
@XmlAccessorType(XmlAccessType.FIELD)
错误是否与点
变量有关
编辑-我将点
变量设置为静态,这样就不会使用XmlAccessType.FIELD的当前设置来写入它,并且它可以很好地写入。如何整理点变量?好的,我找到了一个页面,解释了为什么点变量会导致这些无限循环错误->StackOverflowerError
有时处理不可映射类的最佳方法是编写
可以使用JAXB映射并在
XmlAdapter中的两个类。在本例中,我们希望使用
点类。因为该类的getLocation()方法(JAXB
将自动拾取和映射),期间将发生无限循环
编组。因为我们无法更改Point类,所以我们将编写一个
新类MyPoint,并在适配器中使用它。-更多信息,请访问:
<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>