【发布时间】:2012-11-08 17:33:47
【问题描述】:
我有一个简单的返回类,它要么接受异常,要么接受我们的业务对象之一。如果 REST Web 服务方法抛出异常,它会捕获它并在响应中设置异常。如果没有,它会在响应中设置返回值并序列化它。
在我的例子中,我得到了一个 InvocationTargetError ,它包装了我们的一个服务异常。我在我的返回类的异常上设置了它并获得以下堆栈跟踪:
java.lang.StackOverflowError
com.google.gson.reflect.TypeToken.hashCode(TypeToken.java:280)
java.util.HashMap.get(HashMap.java:300)
java.util.Collections$SynchronizedMap.get(Collections.java:1975)
com.google.gson.Gson.getAdapter(Gson.java:337)
com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:55)
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89)
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:195)
com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89)
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:195)
com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89)
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:195)
and so on...
有人有什么想法吗?这看起来像是 Gson 2.2.2 中的错误。
【问题讨论】:
-
你确定没有循环引用吗? stackoverflow.com/questions/10209959/…(这就是发生在我身上的事)
-
这是个例外。什么是循环的?
-
摸不着头脑 - 原来 Throwable 的
cause字段是问题所在。见groups.google.com/forum/?fromgroups=#!topic/google-gson/…