Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在snakeyaml中序列化hashmap时发生堆栈溢出_Java_Stack Overflow_Snakeyaml - Fatal编程技术网

Java 在snakeyaml中序列化hashmap时发生堆栈溢出

Java 在snakeyaml中序列化hashmap时发生堆栈溢出,java,stack-overflow,snakeyaml,Java,Stack Overflow,Snakeyaml,我试图用snakeYAML 1.13序列化一个包含hashmap的类,结果得到了一个非常奇怪的stackoverflow: 完整的代码在类中还有一些其他的东西,为了简单起见,我去掉了这些东西 使用的示例代码: import java.awt.Point; import java.util.HashMap; import org.yaml.snakeyaml.Yaml; class TestClass { public static void main(final String arg

我试图用snakeYAML 1.13序列化一个包含hashmap的类,结果得到了一个非常奇怪的stackoverflow:

完整的代码在类中还有一些其他的东西,为了简单起见,我去掉了这些东西

使用的示例代码:

import java.awt.Point;
import java.util.HashMap;
import org.yaml.snakeyaml.Yaml;


class TestClass
{
    public static void main(final String args2[])
    {
        IZSkinFile f = new IZSkinFile();
        HashMap<String,Point> ep = f.getElementPositions();
        ep.put("another unimportant name",new java.awt.Point(10, 10));
        System.out.println(new Yaml().dump(f));
    }
}

class IZSkinFile
{
    public IZSkinFile(String uprogram)
    {
        elementPositions = new HashMap<>();
    }
    public IZSkinFile(){
    elementPositions = new HashMap<>();    
    }//serialisierer....
    // private HashMap<String,String> elementDefinitions;//name>typ (Grafik/text/Schriftart)
    private HashMap<String,Point> elementPositions; //basisposition des elements
    public HashMap<String, Point> getElementPositions()
    {
        return elementPositions;
    }

    public void setElementPositions(HashMap<String, Point> elementPositions)
    {
        this.elementPositions = elementPositions;
    }
}
导入java.awt.Point;
导入java.util.HashMap;
导入org.yaml.snakeyaml.yaml;
类TestClass
{
公共静态void main(最终字符串args2[])
{
IZSkinFile f=新的IZSkinFile();
HashMap ep=f.getElementPositions();
put(“另一个不重要的名字”,newjava.awt.Point(10,10));
System.out.println(新Yaml().dump(f));
}
}
类文件
{
公共文件(字符串连根图)
{
elementPositions=newhashmap();
}
公共文件(){
elementPositions=newhashmap();
}//连载者。。。。
//私有HashMap元素定义;//名称>类型(Grafik/text/schriStart)
私有HashMap elementPositions;//基本位置des元素
公共HashMap getElementPositions()
{
返回元素位置;
}
公共void setElementPositions(HashMap elementPositions)
{
this.elementPositions=elementPositions;
}
}
结果如下Stackoverflow(仅显示上端和下端,用于保存不必要的行):

Exception in thread "main" java.lang.StackOverflowError
    at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:122)
    at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:114)
    at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:415)
    at java.lang.StringBuilder.append(StringBuilder.java:132)
    at org.yaml.snakeyaml.nodes.Tag.<init>(Tag.java:87)
    at org.yaml.snakeyaml.representer.Representer.representJavaBean(Representer.java:74)
    at org.yaml.snakeyaml.representer.Representer$RepresentJavaBean.representData(Representer.java:49)
    at org.yaml.snakeyaml.representer.BaseRepresenter.representData(BaseRepresenter.java:106)
    at org.yaml.snakeyaml.representer.Representer.representJavaBeanProperty(Representer.java:125)
    at org.yaml.snakeyaml.representer.Representer.representJavaBean(Representer.java:83)
    at org.yaml.snakeyaml.representer.Representer$RepresentJavaBean.representData(Representer.java:49)
    at org.yaml.snakeyaml.representer.BaseRepresenter.representData(BaseRepresenter.java:106)
    at org.yaml.snakeyaml.representer.Representer.representJavaBeanProperty(Representer.java:125)
    at org.yaml.snakeyaml.representer.Representer.representJavaBean(Representer.java:83)
    at org.yaml.snakeyaml.representer.Representer$RepresentJavaBean.representData(Representer.java:49)
    at org.yaml.snakeyaml.representer.BaseRepresenter.representData(BaseRepresenter.java:106)
    at org.yaml.snakeyaml.representer.Representer.representJavaBeanProperty(Representer.java:125)
    at org.yaml.snakeyaml.representer.Representer.representJavaBean(Representer.java:83)
...
...
...
    at org.yaml.snakeyaml.representer.Representer.representJavaBeanProperty(Representer.java:125)
    at org.yaml.snakeyaml.representer.Representer.representJavaBean(Representer.java:83)
    at org.yaml.snakeyaml.representer.Representer$RepresentJavaBean.representData(Representer.java:49)
    at org.yaml.snakeyaml.representer.BaseRepresenter.representData(BaseRepresenter.java:106)
    at org.yaml.snakeyaml.representer.Representer.representJavaBeanProperty(Representer.java:125)
    at org.yaml.snakeyaml.representer.Representer.representJavaBean(Representer.java:83)
    at org.yaml.snakeyaml.representer.Representer$RepresentJavaBean.representData(Representer.java:49)
    at org.yaml.snakeyaml.representer.BaseRepresenter.representData(BaseRepresenter.java:106)
    at org.yaml.snakeyaml.representer.Representer.representJavaBeanProperty(Representer.java:125)
    at org.yaml.snakeyaml.representer.Representer.representJavaBean(Representer.java:83)
    at org.yaml.snakeyaml.representer.Representer$RepresentJavaBean.representData(Representer.java:49)
    at org.yaml.snakeyaml.representer.BaseRepresenter.representData(BaseRepresenter.java:106)
线程“main”java.lang.StackOverflower中出现异常 位于java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:122) 位于java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:114) 位于java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:415) 位于java.lang.StringBuilder.append(StringBuilder.java:132) 位于org.yaml.snakeyaml.nodes.Tag.(Tag.java:87) 位于org.yaml.snakeyaml.representer.representer.representJavaBean(representer.java:74) 位于org.yaml.snakeyaml.representer.representer$RepresentJavaBean.representData(representer.java:49) 位于org.yaml.snakeyaml.representer.BaseRepresenter.representData(BaseRepresenter.java:106) 位于org.yaml.snakeyaml.representer.representer.representJavaBeanProperty(representer.java:125) 位于org.yaml.snakeyaml.representer.representer.representJavaBean(representer.java:83) 位于org.yaml.snakeyaml.representer.representer$RepresentJavaBean.representData(representer.java:49) 位于org.yaml.snakeyaml.representer.BaseRepresenter.representData(BaseRepresenter.java:106) 位于org.yaml.snakeyaml.representer.representer.representJavaBeanProperty(representer.java:125) 位于org.yaml.snakeyaml.representer.representer.representJavaBean(representer.java:83) 位于org.yaml.snakeyaml.representer.representer$RepresentJavaBean.representData(representer.java:49) 位于org.yaml.snakeyaml.representer.BaseRepresenter.representData(BaseRepresenter.java:106) 位于org.yaml.snakeyaml.representer.representer.representJavaBeanProperty(representer.java:125) 位于org.yaml.snakeyaml.representer.representer.representJavaBean(representer.java:83) ... ... ... 位于org.yaml.snakeyaml.representer.representer.representJavaBeanProperty(representer.java:125) 位于org.yaml.snakeyaml.representer.representer.representJavaBean(representer.java:83) 位于org.yaml.snakeyaml.representer.representer$RepresentJavaBean.representData(representer.java:49) 位于org.yaml.snakeyaml.representer.BaseRepresenter.representData(BaseRepresenter.java:106) 位于org.yaml.snakeyaml.representer.representer.representJavaBeanProperty(representer.java:125) 位于org.yaml.snakeyaml.representer.representer.representJavaBean(representer.java:83) 位于org.yaml.snakeyaml.representer.representer$RepresentJavaBean.representData(representer.java:49) 位于org.yaml.snakeyaml.representer.BaseRepresenter.representData(BaseRepresenter.java:106) 位于org.yaml.snakeyaml.representer.representer.representJavaBeanProperty(representer.java:125) 位于org.yaml.snakeyaml.representer.representer.representJavaBean(representer.java:83) 位于org.yaml.snakeyaml.representer.representer$RepresentJavaBean.representData(representer.java:49) 位于org.yaml.snakeyaml.representer.BaseRepresenter.representData(BaseRepresenter.java:106)
发现了愚蠢的问题…

不知何故,
java.awt.Point
即使它只有2个属性也会弄糟。由于这个bug让我抓狂,现在使用一个带有2个int的
int[]
数组来存储。

太好了,如果问题得到解决,请接受您的答案:)需要等待2天,直到可能