java - 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
。</p>
顺便说一句,如果参数具有long
java 中的类型,3L
则无法再次工作。您应该使用.jlong(3)
而不是3L
再次使用。函数的签名在 rJava 中非常重要!
推荐阅读
- python - 我想要一个upvote按钮,单击该按钮时会增加数据库中字段(整数)的值
- android - SwipeCards 未显示使用自定义适配器
- flash - 如何安装 ADOBE Flash Player?
- python - 将大数据框拆分为多个数据框
- apache-nifi - nifi-api:列出所有处理器及其配置
- r - 在 rmarkdown 中创建页眉时的格式问题
- android - Android Studio - Kotlin 类中未命中断点
- python - 如何用另一个 numpy 数组屏蔽 numpy 数组?
- docker - 如何将 dotnet 核心应用程序的退出代码从 docker 容器中传递出去
- c# - ASP.Net MVC Core 拒绝为视图正确设置当前文化