Пиша библиотека, която прави много неща.
Ситуация: в моя Android проект AAA включвам библиотеката XXX и произлизам от абстрактен клас A (който се намира в библиотеката XXX).
Когато се опитвам да извикам производния клас в библиотеката XXX, GSON не намира класа (в програмата за отстраняване на грешки виждам правилния клас - той беше предоставен на фабриката преди)
Gson спира с InvocationTargetException
по време на процеса на разрешаване. Точно същият клас работи, ако е част от библиотеката XXX
JSON:
{
"subtext":"super subtext!!!",
"myText":"hello 1",
"id":"ff8081813cf34f79013cf34fba750001",
"myAAA":false,
"version":0
}
код:
// code to invoke (in library XXX)
public static A fromJson(String gsonString,
Class clazz) {
A myAbstractClass = null; // A1 is a subclass of A
try {
Gson gson = new Gson();
myAbstractClass = gson.fromJson(gsonString, clazz);
} catch (Exception e) {
}
return myAbstractClass;
}
Как мога да разреша това?
РЕДАКТИРАНЕ: проследяване на стека
02-19 17:58:24.442: E/AndroidRuntime(4463): FATAL EXCEPTION: main
02-19 17:58:24.442: E/AndroidRuntime(4463): java.lang.StackOverflowError
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:371)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:355)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:117)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:72)
02-19 17:58:24.442: E/AndroidRuntime(4463): at com.google.gson.Gson.getAdapter(Gson.java:353)
? extends A1
- person njzk2   schedule 19.02.2013clazz.newInstance()
и вижте дали наистина можете да създадете класа. - person mercutio   schedule 19.02.2013