1

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

4

1 回答 1

1

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

.jcall(obj,"I","monthlyT",.jcast(cal, "java/util/Calendar" ))
于 2012-11-08T09:36:58.523 回答