rJava.jnew java.lang.NoSuchMethodError
rJava .jnew java.lang.NoSuchMethodError
我是 '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 中非常重要!
我是 '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 中非常重要!