2011-05-10 115 views
0

我需要的对象类传递给方法(gson.fromJson) 但JRuby的说:'[email protected]' is not a Class如何在JRuby中引用Class对象?

如何在JRuby中引用的类(例如Bob.class)?


include Java 
include_class Java::com.google.gson.Gson 
include_class Java::com.bobmanager.Bob 

def json_load(filename) 
    gson = Gson.new 
    jsonBob = IO.read filename 
    $dto = gson.fromJson jsonBob, Bob.class # <-- here is the problem: Bob.class 
end 

json_load 'C:/json/1152.json' 

产生如下:

<stack_trace_array message='org.jruby.embed.EvalFailedException: Native Exception: 'class java.lang.IllegalArgumentException'; Message: Type '[email protected]' is not a Class, ParameterizedType, or GenericArrayType. Can't extract class.; StackTrace: java.lang.IllegalArgumentException: Type '[email protected]' is not a Class, ParameterizedType, or GenericArrayType. Can't extract class. 
    at com.google.gson.TypeUtils.toRawClass(TypeUtils.java:83) 
    at com.google.gson.TypeInfo.<init>(TypeInfo.java:34) 
    at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:102) 
    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) 
' > 
+0

你可能想尝试Bob.java_class。 – xinit 2011-05-10 19:16:13

回答

0

尝试使用Bob.java_class而不是Bob.class

+0

我注意到如果Ruby类扩展了一个java类,那么java_class实际上会返回超类。有没有人观察过这个?如果是的话,我如何获得对java类的引用? – kartikq 2012-04-20 15:41:12