我尝试用 rJava 调用 java 类中的方法几天了,但我还没有弄清楚我做错了什么。也许这里有人会给我一些线索。
情况是这样的:
-
我加载库并初始化一个对象(工作正常):
library(rJava)
.jinit('C:/javatemp/worker.jar')
jobject <- .jnew("worker.concrete")
-
我列出了方法并得到了很好的结果:
.jmethods(jobject)
> [1] "public java.util.List worker.concrete.lookup(java.lang.CharSequence)"
-
我正在准备输入结构,它也可以正常工作:
word <- .jnew("java/lang/String", "a word")
input = .jcast(word, "java/lang/CharSequence", check = TRUE)
-
但是,当我尝试执行该方法时,出现错误,表明此类方法不存在......
out = .jcall(jobject,"Ljava/util/List","lookup",input)
> Error in .jcall(jobject, "Ljava/util/List", "lookup", input) :
method lookup with signature (Ljava/lang/CharSequence;)Ljava/util/List not found
有谁知道如何调用这样的方法?
很抱歉回答一个老问题,但这也困扰了我一段时间。答案是:;
非原始返回类型的类型规范的格式为Lpackage/subpackage/Type;
- 它必须以分号结尾。因此,在上面的示例中,您需要:
out = .jcall(jobject,"Ljava/util/List;","lookup",input)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)