我正在尝试使用JVMR将R集成到Scala中。尝试实例化RInScala时,我得到一个NoSuchMethodError。
我正在使用安装在C:\ Program Files \ R \ R-3.1.1下的R的Windows 7计算机,而Scala版本2.11.1安装在C:\ Program Files(x86)\ scala下。我正在使用Scala插件开发IntelliJ,并使用Scala工作表来测试它作为POC。我的Scala项目确实将JVMR 2.11-2.11.1.1.jar显示为包含的库。工作表目前非常基础 - 只是导入和实例化尝试。
import org.ddahl.jvmr.RInScala
val R = RInScala()
在IntelliJ中运行工作表时,我看到以下输出,所以我可以说它已成功导入类,但无法实例化。
import org.ddahl.jvmr.RInScala
java.lang.NoSuchMethodError: scala.runtime.ObjectRef.create(Ljava/lang/Object;)Lscala/runtime/ObjectRef;
at org.ddahl.jvmr.RInScala$.findROnWindows(RInScalaTest.sc2318647708135405919.tmp:804)
at org.ddahl.jvmr.RInScala$.defaultExecutable$lzycompute(RInScalaTest.sc2318647708135405919.tmp:822)
at org.ddahl.jvmr.RInScala$.defaultExecutable(RInScalaTest.sc2318647708135405919.tmp:821)
at org.ddahl.jvmr.RInScala.<init>(RInScalaTest.sc2318647708135405919.tmp:28)
at org.ddahl.jvmr.RInScala$.apply(RInScalaTest.sc2318647708135405919.tmp:838)
at com.xxxx.r_in_scala.A$A1$A$A1.R$lzycompute(RInScalaTest.sc2318647708135405919.tmp:2)
at com.xxxx.r_in_scala.A$A1$A$A1.R(RInScalaTest.sc2318647708135405919.tmp:2)
at com.xxxx.r_in_scala.A$A1$A$A1.get$$instance$$R(RInScalaTest.sc2318647708135405919.tmp:2)
at #worksheet#.#worksheet#(RInScalaTest.sc2318647708135405919.tmp:10)
我已经深入研究了findROnWindows的代码,我的安装应该根据正在读取的注册表项的值找到。我敢肯定我错过了一些简单的东西,但是在那个“我一直在研究这个问题太长时间没有搞清楚,只需要一套新的眼睛”阶段。
答案 0 :(得分:0)
据我所知,这是目前IntelliJ的工作表实现中的某种错误,或者实际上是错误的配置。核实: 将代码放在对象中
package starter
object Test extends App {
import org.ddahl.jvmr.RInScala
val R = RInScala()
println("works")
}
并尝试将其作为scala应用程序运行,而不是从工作表中运行。