在.jcall中传递参数

时间:2012-08-07 01:12:19

标签: r rjava

我刚开始使用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对象的其他信息来回答这个问题。

1 个答案:

答案 0 :(得分:1)

caljava.util.GregorianCalendar而不是java.util.Calendar。如果你想使用低级.jcall接口(为什么?),那么你需要自己进行转换。所以像这样:

.jcall(obj,"I","monthlyT",.jcast(cal, "java/util/Calendar" ))