Я получаю ошибку 'IllegalArgumentException occured' Can not set java.util.ArrayList field mi.types.ListOfObjects.objects to java.util.LinkedList
Я делаю следующее...
ListOfObjects objects = li.getUsersObjects();
который обычно отлично работает, однако, когда я делаю тот же самый вызов с точно таким же кодом внутри Play, это не так. Я вызываю его в моем контроллере безопасности внутри функции authenticate()
. Есть случай, когда объекты пользователей получены с внешнего сервера. Вот когда этот звонок сделан. Он отлично работает без Play, и я почти уверен, что он работал, прежде чем я поместил его в контроллер безопасности. Почему его размещение здесь может вызвать такую проблему?
ИЗМЕНИТЬ
ListOfObjects
— это настраиваемый объект, который содержит некоторые значения. Он расположен внутри li
, библиотеки, которую я импортирую. Это выглядит примерно так...
public class ListOfObjects {
private ArrayList<Object> objects;
public ArrayList<Object> getObjects(){
return objects;
}
}
getUserObjects
просто возвращает объекты для этого пользователя. Он захватывает их с сервера, а затем использует gson
для их анализа. Однако я получаю указанную выше ошибку, когда пытаюсь это сделать.
ИЗМЕНИТЬ2
Независимо от того, что я делаю, мой тип для getUserObjects всегда возвращается как LinkedList, даже если это объект ArrayList. Я пытался позвонить getObjects()
напрямую, и никаких изменений.
ИЗМЕНИТЬ 3
getUserObjects определяется как...
Gson gson = new Gson();
ListOfObjects objects = gson.fromJson(r.getBody(), ListOfObjects.class);
Трассировки стека...
где r.getBody()
— это ответ сервера в формате JSON.
Execution exception (In /app/controllers/Security.java around line 57)
IllegalArgumentException occured : Can not set java.util.ArrayList field lm.types.ListOfObjects.objects to java.util.LinkedList
play.exceptions.JavaExecutionException: Can not set java.util.ArrayList field lm.types.ListOfObjects.objects to java.util.LinkedList
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:227)
at Invocation.HTTP Request(Play!)
Caused by: java.lang.IllegalArgumentException: Can not set java.util.ArrayList field lm.types.ListOfObjects.objects to java.util.LinkedList
at com.google.gson.FieldAttributes.set(FieldAttributes.java:188)
at com.google.gson.JsonObjectDeserializationVisitor.visitFieldUsingCustomHandler(JsonObjectDeserializationVisitor.java:118)
at com.google.gson.ObjectNavigator.navigateClassFields(ObjectNavigator.java:158)
at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:131)
at com.google.gson.JsonDeserializationContextDefault.fromJsonObject(JsonDeserializationContextDefault.java:73)
at com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:51)
at com.google.gson.Gson.fromJson(Gson.java:568)
at com.google.gson.Gson.fromJson(Gson.java:515)
at com.google.gson.Gson.fromJson(Gson.java:484)
at com.google.gson.Gson.fromJson(Gson.java:434)
at com.google.gson.Gson.fromJson(Gson.java:406)
at lm.lib.LMethods.getUsersObjects(LMethods.java:165)
at controllers.Security.createNewUser(Security.java:57)
at controllers.Security.authenticate(Security.java:36)
at play.utils.Java.invokeStaticOrParent(Java.java:159)
at controllers.Secure$Security.invoke(Secure.java:193)
at controllers.Secure$Security.access$0(Secure.java:184)
at controllers.Secure.authenticate(Secure.java:64)
at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:540)
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:498)
at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:474)
at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:469)
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:157)
... 1 more
Отладчику не удалось подключиться: ошибка recv во время рукопожатия: сброс соединения узлом
ListOfObject
,li
,getUsersObjects()
? - person axtavt   schedule 02.11.2011getUsersObjects()
- person Skizit   schedule 02.11.2011