我刚开始使用rJava在基于R的应用程序中使用大量Java代码。我尝试了一些简单的“Hello world”类型的东西,所以我知道基本设置正常。我有几个问题,但我希望如果我能使用.jcall
解决这个基本问题,它们将得到解决。
> cal = new(J("java/util/GregorianCalendar"))
> obj = new(J("au.gov.ips.dataarchive.TIndex"))
> obj$monthlyT(cal)
[1] 77
> .jcall(obj,"I","monthlyT",cal)
Error in .jcall(obj, "I", "monthlyT", cal) :
method monthlyT with signature (Ljava/util/GregorianCalendar;)I not found
根据我的理解,第3行和第4行是等效的,应该产生相同的结果。显然我做错了什么。 'monthlyT'方法在java代码中定义为:
static public Integer monthlyT(Calendar month)
我不是Java专家,所以请让我知道我可能需要提供的有关Java对象的其他信息来回答这个问题。
答案 0 :(得分:1)
cal
是java.util.GregorianCalendar
而不是java.util.Calendar
。如果你想使用低级.jcall
接口(为什么?),那么你需要自己进行转换。所以像这样:
.jcall(obj,"I","monthlyT",.jcast(cal, "java/util/Calendar" ))