我试图用rJava在java类中调用一个方法几天,我还没弄清楚我做错了什么.也许这里有人会为我提供一些线索.
情况如下:
我加载库并初始化一个对象(这很好):
library(rJava)
.jinit('C:/javatemp/worker.jar')
jobject <- .jnew("worker.concrete")
Run Code Online (Sandbox Code Playgroud)我列出方法,我得到了很好的结果:
.jmethods(jobject)
> [1] "public java.util.List worker.concrete.lookup(java.lang.CharSequence)"
Run Code Online (Sandbox Code Playgroud)我正在准备输入结构,也可以正常工作:
word <- .jnew("java/lang/String", "a word")
input = .jcast(word, "java/lang/CharSequence", check = TRUE)
Run Code Online (Sandbox Code Playgroud)但是,当我尝试执行该方法时,我得到一个错误,这种方法不存在...
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
Run Code Online (Sandbox Code Playgroud)有谁知道如何调用这种方法?
很抱歉回答了一个老问题,但这也困扰了我一段时间.答案是:;
非原始返回类型的类型规范格式是Lpackage/subpackage/Type;- 它必须以分号结尾.所以在上面的例子中,你需要:
out = .jcall(jobject,"Ljava/util/List;","lookup",input)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1394 次 |
| 最近记录: |