我是'rJava'的新手,遇到了数小时的麻烦。
library(rJava)
.jinit(classpath="C:\\Users\\XXX\\desktop\\example")
.jclassPath()
# [1] "C:\\Users\\XXX\\Documents\\R\\win-library\\3.5\\rJava\\java"
# [2] "C:\\Users\\XXX\\desktop\\example"
s=.jnew("java/lang/String", "Hello World")
.jcall(s, "I", "length")
# 11
.jcall('Exampletest', returnSig='I', method='test')
# 1
.jnew('Exampletest', 3)
# Error in .jnew("Exampletest", 3) : java.lang.NoSuchMethodError: <init>
这很奇怪,因为我已经成功调用了函数“ test”,但仍然无法创建新对象。
Java代码在这里
public class Exampletest {
static public int test() {
return 1;
}
public Exampletest(int x) {
this.x = x;
}
private int x;
}
任何想法表示赞赏!
最佳答案
啊哈,去年我开始使用rJava时遇到了这个问题。该问题仅是因为在r中,3是一个数字而不是整数。因此,您应该使用3L
而不是3
。
顺便说一句,如果参数在Java中具有long
类型,则3L
将不再起作用。您应该再次使用.jlong(3)
而不是3L
。函数的签名在rJava中非常重要!
关于java - rJava .jnew java.lang.NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51152150/