4

Expandoをシリアル化しようとすると、StackoverflowError(コードまでさかのぼらない)が発生します。グルーヴィーなシェルで再現:

... groovy-2.0.6/bin/groovysh new groovy.json.JsonBuilder(new Expando(name:'hello')).toString()
FATAL: java.lang.StackOverflowError
java.lang.StackOverflowError
        at java.lang.Exception.<init>(Exception.java:77)
        at java.lang.reflect.InvocationTargetException.<init>(InvocationTargetException.java:54)
        at sun.reflect.GeneratedMethodAccessor13.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
...

これは正しく機能するはずですか?

4

1 に答える 1

3

うわー..それはバグです。1.8.8で導入されたようです

1.8.6で動作します:

groovy-1.8.6/bin/groovysh new groovy.json.JsonBuilder(new Expando(name:'hello')).toString();

===> {"name":"hello"}

1.8.8でのStackoverflowError:

groovy-1.8.8/bin/groovysh new groovy.json.JsonBuilder(new Expando(name:'hello')).toString();
FATAL: java.lang.StackOverflowError
java.lang.StackOverflowError

2.1.0rc1にバグが報告されているようです:https ://issues.apache.org/jira/browse/GROOVY-5918

于 2013-01-18T20:28:59.177 に答える